2009-12-12 69 views
0

我想创建具有自定义外观和感觉的按钮。我有不同的图像设置为普通,鼠标悬停,鼠标点击,按钮禁用等按钮的背景。我创建了自己的类,扩展了javax.swing.JButton并覆盖了paintComponent方法。我怎样才能改变我的按钮背景为所有上述给定的状态。Java Swing JButton

回答

0
ImageIcon icon = new ImageIcon("images/icon.gif"); 
JButton button = new JButton(icon); 
+0

谢谢你回答yankee2905。此代码是在按钮上设置图标图像。我想知道如何删除按钮的默认外观和添加我自己的图像鼠标悬停,鼠标点击和禁用状态? – Nilesh 2009-12-12 07:50:04

3

JButton的具有一系列的简单的设置方法翻转,压制,选择,残疾人和禁用选择的状态 - 例如

button.setPressedIcon(new ImageIcon("images/button-down.png") 

的其它方法是:

button.setRolloverIcon() 
button.setSelectedIcon() 
button.setRolloverSelectedIcon() 
button.setDisabledIcon() 
button.setDisabledSelectedIcon() 

。 ..玩的开心 !

顺便说一句,奥赖利有一个称为摇摆黑客有很多好吃的东西少一个有趣的书有玩秋千:Swing Hacks

4

除了史蒂夫德考克斯的回答,您可以:

  1. 添加MouseListener时改变的enum变量,我们称之为state您的扩展JButton
  2. 在你重写paintComponent考虑到目前的state并绘制不同的背景。像

    if (!getModel().isEnabled()) { 
    } else if (state == ButtonState.MOUSE_OVER) { 
    } else if (state == ButtonState.MOUSE_CLICKED) { 
    } 
    
+0

非常感谢你Bozho ...它的工作很好......我很高兴..非常感谢 – Nilesh 2009-12-12 09:04:56

+1

那么为什么你没有接受答案,所以人们知道这个问题已经得到解答? – camickr 2009-12-12 15:46:03

2

您可以创建一个自定义按钮UI委托。这个博客条目:http://blog.elevenworks.com/?p=4有一个自定义选项卡窗格的示例,但原理相同。扩展BasicButtonUI,实现你想要的按钮的自定义渲染,然后调用按钮上的setUI()。

与使用现有的按钮API方法来改变外观相比,这可能需要更长的时间来实现,但它给了您更多的控制权。