【问题标题】:Can I highlight text in a JLabel?我可以突出显示 JLabel 中的文本吗?
【发布时间】:2015-08-29 19:29:48
【问题描述】:

我有一个 JLabel,里面有一些文字。这个 JLabel 占据了我的 JFrame 的整个底部。我把它的背景改成了黄色,整个底边都变成黄色了。有没有办法让它看起来像 JLabel 中的文本被“突出显示”,只有文本的背景颜色为黄色,其余的颜色不同?我的 JFrame 的顶部是一个 JPanel。

combo.addItemListener(new ItemChangeListener());
JPanel container = new JPanel();
container.setBackground(Color.BLUE);

response.setFont(new Font("Times new Roman", Font.BOLD, 40));
response.setHorizontalAlignment(SwingConstants.CENTER);

response.setBackground(Color.YELLOW);
response.setOpaque(true);
add(response , BorderLayout.CENTER);
container.add(selectone);
container.add(combo);
this.add(container, BorderLayout.NORTH);

【问题讨论】:

标签: java swing text jlabel


【解决方案1】:

使用符合标签首选尺寸的包装面板:

JLabel label = new JLabel("...");
label.setOpaque( true );
label.setBackground(...);
JPanel wrapper = new JPanel();
wrapper.add( label );
frame.add(wrapper, BorderLayout.CENTER);

JPanel 的默认布局是水平居中对齐的FlowLayout

如果您希望水平居中和垂直居中,则在面板上使用GridBagLayout,将标签添加到面板时使用默认GrigBagConstraints

【讨论】:

  • 虽然您没有被标记为最佳答案,但我感谢您的回答。非常感谢!
【解决方案2】:

有一种非常简单的方法可以做到这一点 - 在标签的文本中使用 HTML。请注意,Swing 解释了一个漂亮的 HTML old version,它不符合当今的标准。

JLabel response = new JLabel( "<html><span bgcolor=\"yellow\">This is the label text</span></html>" );

如今,应该使用样式表。但如果你想这样做,你可能应该从 Swing 切换到 JavaFX。

有关在 Swing 组件中使用 HTML 的更多详细信息,请参阅applicable part of the tutorial

【讨论】:

  • 谢谢,它成功了。直到现在我都不知道你可以将 HTML 命令添加到 java 中!你能解释一下关于在 Swing 中添加 HTML 的内容吗?我会将您标记为最佳答案,并在我理解后立即喜欢您的答案。谢谢。
  • 一个标签只有一个背景。标签周围的背景是父组件,这就是我建议嵌套面板的原因。
  • Could you please explain a little bit about adding HTML into Swing? - 阅读教程。基础教程需要指点多少次???搜索线索内容。 I will mark you as best answer, 如果它是最佳答案,那么现在就接受它,因为“您的原始问题”已得到回答。
猜你喜欢
  • 2013-06-18
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 2021-06-30
  • 2020-01-22
相关资源
最近更新 更多