2

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

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

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

4

2 回答 2

4

AJToggleButton可能是理想的,如Swing JToolbarButton 按下所示

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

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

于 2011-12-05T04:05:59.640 回答
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());

于 2011-12-05T04:10:09.740 回答