2009-02-05 93 views
5

如何在Swing界面中创建切换图像按钮? 我有两个图像,imageon.jpg和imageoff.jpg,我基本上想要一个可点击的元素来切换图像并触发一个事件。Java:图像作为切换按钮

更新:有没有办法来覆盖图像周围通常的'铬'?我更喜欢简单的图像到里面有图像的按钮。

回答

10

使用ImageIcon加载图像。创建一个JToggleButton。然后应用AbstractButton.setIcon/setPressedIcon/setSelectedIcon的图标。删除与AbstractButton.setBorderPainted(false)的边界。

+2

嗯,忘了这些方法。 (除非你记得它们存在,否则它们不会出现在Javadoc中。)+1 – 2009-02-05 17:15:23

3

JToggleButton怎么样?您可以对它进行子类化并覆盖paint()以根据是否选择正确的图像来绘制。

另一种方法是继承JPanel并捕获鼠标点击,覆盖paintComponent()以绘制正确的图像。这样,唯一得到的是实际图像(不像JToggleButton选项)。

+0

感谢您的JPanel提示! 我发现这个资源,希望它教我建立我需要什么: http://java.sun.com/docs/books/tutorial/uiswing/painting/index.html – Dan 2009-02-05 17:25:11

1

最好的办法是子类AbstractButton,并设置像边框和背景(在你的构造函数中)的属性。

MyButton() { 
    setBorder(null); 
    setBackground(null); 
    } 
2

我与JButtons有同样的问题。试试这个:

result = new JButton(icon); 
result.setBorderPainted(false); 
result.setContentAreaFilled(false); 

width = icon.getIconWidth(); 
height = icon.getIconHeight(); 
result.setPreferredSize(new Dimension(width, height)); 

有必要设置首选大小,以摆脱按钮周围的额外空间。这在Windows 7和Mac OS X 10.6上适用于我。