JLabel与单独的文本和图标背景颜色

时间:2010-03-25 12:30:18

标签: java swing user-interface jlabel

我有一个简单的Jlabel元素,带有文字和图标

alt text

设置背景会更改完整标签颜色。

我希望只能在标签的文本部分渲染背景颜色,即 - 为图标和文本分别设置背景/前景。选择/取消选择标签将翻转图标和文本后面的颜色。这可以通过扩展JLabel来实现,如果是这样,我应该寻找哪些方法进行自定义?

alt text

我的另一个想法是创建一个带有两个单独标签元素的面板,一个带有图标,另一个带有文本。它似乎有点混乱,在我开始之前我想知道是否有一种更聪明的方法来实现这一点与Swing。

3 个答案:

答案 0 :(得分:1)

我喜欢你正在做的事情,但看起来你正在重新实现JToggleButton。

这是一个切换按钮示例,左侧被选中,右侧未被选中:

alt text http://downloads.padlocksoftware.net/toggle.png

它没有华丽的文本背景,但它是一个不需要你实现自己的组件的解决方案。

对齐设置为:

jToggleButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jToggleButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);

答案 1 :(得分:0)

我认为您使用的图标具有透明背景?如果是这样,您可以使用具有匹配背景颜色的图标。这样做应该允许你在整个标签上设置setBackground(),但只能在文本上看到它。

答案 2 :(得分:0)

JButton支持图像和文本的不同对齐选项。在大多数情况下,图像或文本都不会填充按钮的整个宽度或高度。所以IMO让它在一个按钮上发生是不现实的,除非你想要覆盖按钮的绘画。

您的另类想法是一个更简单的解决方案。在那里,您可以使用BorderLayoutMigLayout来实现目标。