单击按钮后更改按钮的背景(即执行动作后)

时间:2011-12-05 03:53:40

标签: java swing icons abstract-action

我试图在点击后更改JButton的背景。目前我的按钮位于GridLayout(3x3)中,如下所示:

tiles.add(new JButton(new AbstractAction("") {
    @Override
    public void actionPerformed(ActionEvent e) {
        this.setIcon("foo.png");
    }
}));

这不起作用。如何在执行操作中操纵图像的背景?

2 个答案:

答案 0 :(得分:4)

Swing JToolbarButton pressing

所示,JToggleButton可能是理想的选择

请注意,您需要添加一些代码以确保按钮只能单击一次。

或者,您可以使用标准JButton并致电AbstractButton.setDisabledIcon(Icon)。单击时禁用该按钮,它将翻转到备用图标。

答案 1 :(得分:1)

您可以创建自己的侦听器来实现MouseListener。这样,您可以控制按钮背景何时更改(释放,按下鼠标等)。这是一个例子

//Add the listener to the button
      myButton.addMouseListener(new customActionListener());

//Create the listener
    class customActionListener implements MouseListener {
        public void mouseExited(MouseEvent e) {
        }

        public void mouseEntered(MouseEvent e) {
        }

        public void mouseReleased(MouseEvent e) {
        }

        public void mousePressed(MouseEvent e) {
        Icon icon = new ImageIcon("icon.gif");
        myButton.setIcon(icon);

        }

        public void mouseClicked(MouseEvent e) {
        }
    }

无论您想将背景设置回默认值,请使用:

myButton.setIcon(new ImageIcon());