2010-12-06 63 views
0

我正在开发一个项目。我想添加一个工具栏到软件中,所以我在面板中放了一些按钮。但是,默认的按钮样式不符合我的需要。我希望该按钮具有以下效果:自定义JButton风格

  1. 当鼠标悬停在按钮上时,该按钮应该看起来像JLabel。按钮中的图标看起来像面板上的图像,即我们可以看到的是按钮中的图标,而其他东西是透明的。
  2. 当鼠标悬停在按钮上时,会出现按钮的边框。它看起来像一个真正的按钮。

示例:就像eclipse工具栏上的按钮一样。

回答

1

那么,你想定制你的JButton渲染?首先,对于一个包罗万象的解决方案,你可以看看现有的LnF,如Substance(显然,它是一个非常强大的解决方案来满足你的需求,但它可能会给你一些启发)。

然后,如果你想自己解决,你必须重写paintComponent方法。

对此,第一步是子类JButton

然后,在您的子类中,首先重新定义paintComponent(Graphics)方法。

请注意,如果所有这一切都过于复杂,您还可以看看setBorderPainted(boolean)方法。

1

扩展JButton,并:

  • 只需添加一个图标,而不是文字, 按钮。
  • 添加MouseMotionListener以捕获 悬停以显示/隐藏边框。
3

为什么不用use a JToolbar而不是JPanel?

+1

+1,OP说他想要一个工具栏。不要重新发明轮子并使用标准的工具栏组件。 – camickr 2010-12-06 16:17:45

1

我明白了。我的问题的答案是setContentAreaFilled()方法。当鼠标悬停在按钮上时,调用setContentAreaFilled(true)。否则,调用setContentAreaFilled(false)。这里是一个相对代码:link text