Java动画和背景颜色

时间:2014-08-06 17:14:39

标签: java swing colors jframe paint

我正在底涂的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();
    }

1 个答案:

答案 0 :(得分:0)

确保您的面板的不透明度设置为true(JPanel.setOpaque(boolean))后,覆盖paintComponent(Graphics g)而不是paint(Graphics g),并将super.paintComponent(g)作为第一个声明。不透明度设置将确保您的背景被绘制。