我试图在单击 JButton 后更改它的背景。目前我的按钮位于 GridLayout (3x3) 中,如下所示:
tiles.add(new JButton(new AbstractAction("") {
@Override
public void actionPerformed(ActionEvent e) {
this.setIcon("foo.png");
}
}));
这不起作用。如何从执行的动作中操纵图像的背景?
我试图在单击 JButton 后更改它的背景。目前我的按钮位于 GridLayout (3x3) 中,如下所示:
tiles.add(new JButton(new AbstractAction("") {
@Override
public void actionPerformed(ActionEvent e) {
this.setIcon("foo.png");
}
}));
这不起作用。如何从执行的动作中操纵图像的背景?
AJToggleButton
可能是理想的,如Swing JToolbarButton 按下所示
请注意,您需要添加一些代码以确保按钮只能单击一次。
或者,您可以使用标准JButton
并调用AbstractButton.setDisabledIcon(Icon)
. 单击时禁用按钮,它将翻转到备用图标。
您可以创建自己的实现 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());