Java: 图像作为切换按钮

5

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

更新:有没有一种方法可以覆盖图像周围通常的“chrome”?我更喜欢简单的图像而不是内部带有图像的按钮。

4个回答

10

使用ImageIcon加载图像。创建一个JToggleButton。然后使用AbstractButton.setIcon/setPressedIcon/setSelectedIcon应用图标。通过AbstractButton.setBorderPainted(false)移除边框。


2
嗯,忘记了那些方法。(除非你记得它们的存在,否则它们不会出现在Javadoc中。)+1 - Michael Myers
2
真的很奇怪...我也试过将borderpainted设置为false,但是图像和切换按钮仍然有边框。如何解决呢?:( - gumuruh

3
如何使用JToggleButton?您可以对其进行子类化并覆盖paint()方法,以根据是否选择绘制正确的图像。

另一种方法是对JPanel进行子类化并捕获鼠标点击事件,重写paintComponent()方法来绘制正确的图像。这样,唯一绘制的内容就是实际图像(与JToggleButton选项不同)。


感谢JPanel提示! 我找到了这个资源,希望它能教我如何构建我需要的内容: http://java.sun.com/docs/books/tutorial/uiswing/painting/index.html - Dan

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上都起作用。


1
你最好的选择是继承AbstractButton类,并在构造函数中设置属性,如边框和背景。
MyButton() {
    setBorder(null);
    setBackground(null);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接