我有一个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);
答案 0 :(得分:2)
有一种非常简单的方法 - 在标签文本中使用HTML。请注意,Swing解释了一个非常StringFormat的HTML,它没有达到今天的标准。
{{1}}
如今,应该使用样式表。但是如果你想这样做,你应该从Swing切换到JavaFX。
有关在Swing组件中使用HTML的更多详细信息,请参阅old version。
答案 1 :(得分:2)
使用符合标签首选大小的包装面板:
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
。