Создал JFrame и попытался изменить фон, но он не работает. Я просмотрел так много решений здесь и в Интернете, и они не работают. Что не так в моем коде?
JFrame frame = new JFrame("Process");
JLabel label = new JLabel("Please wait...");
JProgressBar pb = new JProgressBar();
pb.setIndeterminate(true);
pb.setBackground(new java.awt.Color(248, 201, 171));
frame.setBackground(new java.awt.Color(242, 186, 152));
frame.setSize(400, 200);
frame.setLocationRelativeTo(null);
JPanel panel = new JPanel();
panel.setBackground(new java.awt.Color(242, 186, 152));
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(10,10,10,10); // make spaces between components on screen
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 20;
panel.add(label, c);
c.gridx = 1;
c.gridy = 1;
c.gridwidth = 20;
panel.add(pb, c);
frame.add(panel);
frame.setVisible(true);
panel.setBackground(new java.awt.Color(242, 186, 152)) - это цвет вашего фона, вы используете его, и он отлично работает в моей среде IDE
Это может решить вашу проблему stackoverflow.com/questions/30269043/…




попробуй frame.getContentPane().setBackground(new java.awt.Color(242, 186, 152));
Этот ответ меняет фон, проблема в том, что панель занимает ВЕСЬ кадр, и поэтому вы видите только цвет, на который установлена панель.
не работайте с фреймом, работайте с frame.getContentPane(). Здесь также должны быть установлены ваша подпанель и макет. Кроме того, вы используете ограничения gridbag, но никогда не устанавливаете макет gridbag сначала. Тем временем вы добавляете во фрейм, и даже если вы добавили в панель содержимого, вы также не указали макет панели содержимого.
После внесения изменений в мой код я обнаружил, что проблема вызвана ограничениями GridBagConstraints c = new GridBagConstraints(); поэтому я изменил это, используя panel.setLayout(null); затем использовал setBounds для настройки положения компонентов label.setBounds(100, 30, 250, 10); и все в порядке
Пожалуйста, прочтите "Как создать минимальный воспроизводимый пример". Затем используйте ссылку редактировать, чтобы улучшить свой вопрос (не добавляйте дополнительную информацию через комментарии). В противном случае мы не сможем ответить на ваш вопрос и помочь вам. «Не работает» — это не рабочее описание проблемы. По крайней мере, опишите, как выглядит кадр (и как вы ожидаете, что он будет выглядеть). Здесь также может быть полезен (небольшой) скриншот.