Я создаю анимацию в нижнем слое JFrame. Я хочу изменить цвет фона JFrame, но он не меняется. В настоящий момент анимация воспроизводится, и мне разрешено перемещать свой JFrame, но цвет фона JFrame по умолчанию светло-серый.
mover = new javax.swing.JPanel(); // allows me to move the JFrame, also it acts as the colored background of the JFrame
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setUndecorated(true);
getContentPane().setLayout(null);
mover.setBackground(new java.awt.Color(51, 51, 51)); // dark gray color
mover.setBorder(new javax.swing.border.MatteBorder(null));
javax.swing.GroupLayout moverLayout = new javax.swing.GroupLayout(mover);
mover.setLayout(moverLayout);
moverLayout.setHorizontalGroup(
moverLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 698, Short.MAX_VALUE)
);
moverLayout.setVerticalGroup(
moverLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 498, Short.MAX_VALUE)
);
getContentPane().add(mover);
mover.setBounds(0, 0, 700, 500);
pack();
Я не уверен, сколько еще информации вам нужно, чтобы помочь мне, поскольку я не уверен, где проблема.
Вот мой двойной буферный код в случае необходимости
@Override
public void paint(Graphics g) {
dbImage = createImage(getWidth(), getHeight());
dbg = dbImage.getGraphics();
draw(dbg);
g.drawImage(dbImage, 0, 0, this);
}
public void draw(Graphics g) {
b.draw(g);
repaint();
}
Убедившись, что ваша панель имеет прозрачность, JPanel.setOpaque(boolean)
true (JPanel.setOpaque(boolean)
), переопределите paintComponent(Graphics g)
вместо paint(Graphics g)
и вызовите super.paintComponent(g)
качестве вашего первого оператора. Настройка непрозрачности гарантирует, что ваш фон будет окрашен.