@FireName
Маркетолог с опытом работы в сфере FMCG

В чём причина неработоспособности программы?

После вызова конструктора, выводится чёрное окно. Что я делаю не так?

package Logic;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Frame {
	
	JPanel p;
	
	public Frame(String title) {
		p = new JPanel();
		p.setPreferredSize(new Dimension(854, 480));
		p.setBackground(new Color(0));
		
		JFrame f = new JFrame(title);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setResizable(false);
		f.setContentPane(p);
		f.pack();
		f.setLocationRelativeTo(null);
		
		p.setFocusable(true);
		p.requestFocus();
		
		f.setVisible(true);
		
		//p.setBackground(new Color(255, 0, 0)); << ЭТА СТРОКА НОРМАЛЬНО РАБОТАЕТ
		
		Graphics g = p.getGraphics();
		g.setColor(new Color(255, 255, 255));
		g.fillRect(0, 0, 1000, 1000);
	}
}
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Окно и все компоненты на нём постоянно перерисовываются графической подсистемой. Поэтому рисовать на компоненте надо в методе перерисовки:
p = new JPanel() {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.setColor(new Color(255, 255, 255));
        g.fillRect(0, 0, 1000, 1000);  
    }    
};
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hacker342
@hacker342
Like Linux
p.setBackground(new Color(0));
//p.setBackground(new Color(255, 0, 0)); << ЭТА СТРОКА НОРМАЛЬНО РАБОТАЕТ
закомментирован
поэтому чёрное окно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы