Java2d: цвет фона JPanel не работает

У меня есть код, показанный ниже:

public VizCanvas(){
    {
        this.setBackground(Color.black);
        this.setSize(400,400);
    }
}

Он работал нормально и отображает панель на черном фоне. Но когда я реализую метод рисования, который ничего не делает, цвет меняется на цвет по умолчанию, т.е. серый.

Я попытался установить graphics.setColor(), но это не помогло.


person Boolean    schedule 14.05.2010    source источник


Ответы (2)


Вам нужно сделать заливку холста цветом фона в методе рисования. Что-то вроде:

g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());

После этого нарисуйте все, что вам нужно. Вы также можете попробовать вызвать super.paint(g) в методе рисования, прежде чем что-либо делать.

person Chris Dennett    schedule 14.05.2010

Пользовательское рисование должно выполняться путем переопределения метода paintComponent(), а НЕ метода paint(). Затем все, что вам нужно сделать, это вызвать super.paintComponent(), чтобы нарисовать фон.

Установка размера компонента ничего не делает. Менеджер компоновки переопределит размер. Вы должны установить предпочтительный размер или переопределить метод getPreferredSize().

Прочтите руководство по Swing, чтобы узнать об основах Swing. Есть разделы по «пользовательскому рисунку» и «использованию менеджеров компоновки».

person camickr    schedule 14.05.2010
comment
java.sun.com/j2se/1.4.2/docs/api/java/awt/ Большинство приложений, являющихся подклассами Canvas, должны переопределять этот метод, чтобы выполнять некоторые полезные операции (обычно пользовательское рисование холста). Операция по умолчанию — просто очистить холст. Приложения, переопределяющие этот метод, не должны вызывать super.paint(g). Я предполагаю, что их VizCanvas является подклассом Canvas, но их конструктор кажется немного голым. Хм. - person Chris Dennett; 14.05.2010