JFrame.setBackground () не работающий — почему? [дубликат]

13
задан devoured elysium 30 April 2010 в 04:22
поделиться

3 ответа

Почему окна не голубые, как ожидалось?

Проблема здесь в том, что область, в которой отображается содержимое JFrame , на самом деле является «панелью содержимого», а не содержимым JFrame сам.

Следовательно, следующая строка:

mainFrame.setBackground(Color.CYAN);

Изменяет цвет JFrame , но на самом деле это не та часть, которая сразу видна при отображении JFrame .

Что необходимо, так это изменить цвет так называемой «панели содержимого * (см. Иллюстрацию в Как использовать корневые панели ), изменив строку выше на следующую:

mainFrame.getContentPane().setBackground(Color.CYAN);

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

Есть ли разница между Color.CYAN и Color.cyan ?

Нет, между ними нет никакой разницы - они оба являются константами в классе Color , которые равны Color ] сами объекты. Единственное различие заключается в именах констант.

Константы с именами в нижнем регистре были введены, когда был введен класс Color (который выглядит как JDK 1.0, поскольку отсутствует " Поскольку обозначение "в спецификации Java API для класса Color "), а имена в верхнем регистре были добавлены позже в JDK 1.4.

Вероятно, добавление именованных констант в верхнем регистре было добавлено, чтобы имена констант в классе Color соответствовали Соглашениям о коде для языка программирования Java , которые в разделе 9: Соглашение об именах гласит, что константы должны быть написаны заглавными буквами.

Ресурсы

Для получения дополнительной информации о том, как использовать фреймы, могут быть интересны следующие ресурсы из Учебники по Java :

44
ответ дан 1 December 2019 в 17:42
поделиться

Это должно работать:

JFrame mainFrame = new JFrame();
mainFrame.setSize(100, 100);
mainFrame.getContentPane().setBackground(Color.CYAN);
mainFrame.setVisible(true);
3
ответ дан 1 December 2019 в 17:42
поделиться

Вы хотите задать цвет панели содержимого JFrame.

Кроме имени, нет никакой разницы между константами цвета в верхнем и верблюжьем регистре.

2
ответ дан 1 December 2019 в 17:42
поделиться
Другие вопросы по тегам:

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