static JCheckBox selectBox;
Не используйте статические переменные. Компоненты Swing должны быть экземплярами переменных, определенными в вашем классе ItemTest.
this.setForeground(new java.awt.Color(80, 80, 90));
Установка переднего плана на JPanel ничего не делает, потому что в JPanel нет настраиваемого рисования,
Вам потребуется установить передний план на JLabel и JCheckbox.
this.setSize(100, 100);
Не использовать setSize (...).Как вы заметили, это будет проигнорировано.
Swing был разработан для использования с менеджерами компоновки.Макет по умолчанию для JPanel - FlowLayout.JLabel и JCheckBox будут отображаться в их предпочтительном размере.
Если вам нужно дополнительное место на панели, вы можете использовать EmptyBorder
.Прочтите раздел из учебника Swing по Как использовать границы для получения дополнительной информации и рабочих примеров.
frame.setLayout(null);
secondPanel.setBounds(345,40,640,700);
Не используйте пустой макет и setBounds (...).
Вместо этого используйте что-то вроде:
frame.setLayout( new GridBagLayout() );
Размер панели будет автоматически определяться компонентами, которые вы добавляете на панель.
Правки:
Я хочу изменить цвет всей панели JPanel
Затем измените фон панели, используя setBackground(...)
, а не setForeground (...).
, так что теперь все элементы находятся в центре окна, вместо моего предыдущего дизайна, где они содержались в jpanel в стороне.
Да, это поведение по умолчанию для GridBagLayout.Если вам это не нравится, вы можете использовать другой менеджер раскладки на кадре.Прочтите руководство по Менеджерам по раскладке .Самым простым может быть FlowLayout
.Вы можете указать выравнивание по левому краю.
с размерами, скажем, 50x50.
Не используйте случайные числа.Вы понятия не имеете, может ли текст метки и флажок отображаться в 50 пикселях.Я уже говорил вам, как сделать размер панели больше.Прочитайте учебник по границам !!!
static GraphicsConfiguration gc;
static JFrame frame = new JFrame(gc);
Вы все еще используете статические переменные.Избавляться от них они не нужны.
frame.setVisible(true);
Это должно быть последнее утверждение ПОСЛЕ того, как все компоненты были добавлены в фрейм.На самом деле код должен быть:
frame.pack();
frame.setVisible( true );
Тогда все компоненты будут отображаться красиво в их предпочтительном размере.
Прочтите учебник, в каждом разделе учебника есть рабочие примеры, которые вы можете скачать ииграть с.Учебник покажет вам, как лучше структурировать ваш код.