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

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

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

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

我的另一种想法是创建一个包含两个独立标签元素的面板,其中一个带有图标,另一个带有文本。 这看起来有点凌乱,在我开始之前,我想知道是否有一个更好的方式与Swing实现这一点。


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

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

替代文字http://downloads.padlocksoftware.net/toggle.png

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

对齐设置为:

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

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


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

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

链接地址: http://www.djcxy.com/p/67653.html

上一篇: JLabel with separate text and icon background colours

下一篇: How to add hyperlink in JLabel