如何在按下时更改JButton背景颜色?

时间:2016-01-30 23:49:32

标签: java swing colors background jbutton

我试图在按下时覆盖JButton的默认背景颜色;只要按下按钮,背景颜色就必须保持不变。

我试过这段代码:

 button.addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent evt) {
        button.setBackground(Color.BLUE); // applied after release!!
        System.out.println("pressed"); // applied on pressed - OK.
    }
});}

mousePressed这里没有达到我的要求!!

永远不会调用此行:button.setBackground(Color.BLUE);。但是这一行被调用:System.out.println("pressed");

然而,释放按钮后调用此行button.setBackground(Color.BLUE); - 不按下!!!

如何达到我的要求?

1 个答案:

答案 0 :(得分:0)

在代码的鼠标适配器部分之前,将Color对象设为:

final Color col = button.getBackground();

然后,在鼠标适配器中,添加以下方法:

public void mouseReleased(MouseEvent e)
{
    button.setBackground(col);
}

这使您的总代码为:

final Color col = b.getBackground();

button.addMouseListener(new MouseAdapter() {

    public void mousePressed(MouseEvent e)
    {
        b.setBackground(Color.BLUE);
    }

    public void mouseReleased(MouseEvent e)
    {
        b.setBackground(g);
    }
});

因此,当您按下时,颜色变为蓝色,然后当您松开鼠标时,它会变回原始颜色。这在我的电脑上运行良好。