【问题标题】:JLabel with separate text and icon background colours具有单独文本和图标背景颜色的 JLabel
【发布时间】:2010-03-25 12:30:18
【问题描述】:

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

设置背景会改变整个标签的颜色。

我希望能够仅在标签的文本部分呈现背景颜色,即 - 为图标和文本提供单独的背景/前景。选择/取消选择标签将翻转图标和文本后面的颜色。是否可以通过扩展 JLabel 来做到这一点,如果可以,我应该寻求定制哪些方法?

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

【问题讨论】:

  • 听起来您所追求的不是标签,而是具有自定义 UI 的按钮,例如通过 JButton.setUI()。 (或者另一种方法是将标签添加到按钮 - JButton 扩展容器 - 然后通过各种按钮事件更改其背景。)

标签: java swing user-interface jlabel


【解决方案1】:

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

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

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

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

对齐方式设置为:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的 - 对选定和取消选定的操作使用透明图标。这里的整个想法是避免重新生成或更改图标颜色。我知道我可以破解它,但我正在寻找正确的解决方案。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-04
      • 2012-07-26
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 2018-12-25
      相关资源
      最近更新 更多