我有一个带有文本和图标的简单 Jlabel 元素
设置背景会改变整个标签的颜色。
我希望能够只在标签的文本部分呈现背景颜色,即 - 为图标和文本提供单独的背景/前景。选择/取消选择标签将翻转图标和文本后面的颜色。是否可以通过扩展 JLabel 来做到这一点,如果可以,我应该寻求定制哪些方法?
我的另一种想法是创建一个具有两个单独标签元素的面板,一个带有图标,另一个带有文本。看起来有点混乱,在我开始之前,我想知道是否有更聪明的方法可以用 Swing 实现这一点。
我有一个带有文本和图标的简单 Jlabel 元素
设置背景会改变整个标签的颜色。
我希望能够只在标签的文本部分呈现背景颜色,即 - 为图标和文本提供单独的背景/前景。选择/取消选择标签将翻转图标和文本后面的颜色。是否可以通过扩展 JLabel 来做到这一点,如果可以,我应该寻求定制哪些方法?
我的另一种想法是创建一个具有两个单独标签元素的面板,一个带有图标,另一个带有文本。看起来有点混乱,在我开始之前,我想知道是否有更聪明的方法可以用 Swing 实现这一点。
我喜欢你正在做的风格,但看起来你正在重新实现 JToggleButton。
这是一个切换按钮示例,左侧被选中,右侧未被选中:
替代文字 http://downloads.padlocksoftware.net/toggle.png
它在文本上没有华丽的背景,但它是一种不需要您实现自己的组件的解决方案。
对齐设置为:
jToggleButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jToggleButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
我假设您使用的图标具有透明背景?如果是这样,您可以使用具有匹配背景颜色的图标。这样做应该允许您在整个标签上设置背景(),但只能在文本上看到它。
JButton
支持图像和文本的不同对齐选项。在大多数情况下,图像或文本都不会填满按钮的整个宽度或高度。所以 IMO 在一个按钮中实现它是不现实的,除非你想覆盖按钮的绘画。
您的替代想法是一个更简单的解决方案。在那里你可以使用BorderLayout
或MigLayout
实现你的目标。