我可以突出显示 JLabel 中的文本吗?

Can I highlight text in a JLabel?

我有一个 JLabel,里面有一些文本。这个 JLabel 占据了我的 JFrame 的整个底部。我把它的背景改成了黄色,整个底面都变成了黄色。有没有办法让它看起来像 JLabel 中的文本 "highlighted" 只有文本的背景颜色为黄色,其余的颜色不同?我的 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);

有一种非常简单的方法 - 在标签文本中使用 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

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

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