我正在底涂的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();
}
答案 0 :(得分:0)
确保您的面板的不透明度设置为true(JPanel.setOpaque(boolean)
)后,覆盖paintComponent(Graphics g)
而不是paint(Graphics g)
,并将super.paintComponent(g)
作为第一个声明。不透明度设置将确保您的背景被绘制。