自定义JButton样式

时间:2010-12-06 15:45:43

标签: java swing look-and-feel jbutton

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

  1. 当鼠标悬停在按钮上时,该按钮应该看起来像JLabel。按钮中的图标看起来就像面板上的图像,即我们只能看到按钮中的图标,其他内容都是透明的。
  2. 当鼠标悬停在按钮上时,会出现按钮的边框。它看起来像一个真正的按钮。
  3. 示例:就像eclipse工具栏上的按钮一样。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

那么,您想要自定义JButton渲染吗?

首先,对于包罗万象的解决方案,您可以查看现有的LnF,如Substance(显然,它是一个非常强大的解决方案,可满足您的需求,但它可能会给您一些灵感)。

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

为此,第一步是继承JButton

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

请注意,如果所有内容过于复杂,您还可以查看setBorderPainted(boolean)方法。

答案 2 :(得分:1)

扩展JButton并:

  • 只需添加一个Icon而不是Text 按钮。
  • 添加MouseMotionListener以进行捕获 悬停以显示/隐藏边框。

答案 3 :(得分:1)

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