我试图在点击后更改JButton的背景。目前我的按钮位于GridLayout(3x3)中,如下所示:
tiles.add(new JButton(new AbstractAction("") {
@Override
public void actionPerformed(ActionEvent e) {
this.setIcon("foo.png");
}
}));
这不起作用。如何在执行操作中操纵图像的背景?
答案 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());