如何设置JLabel以获取所有可用的宽度空间?

时间:2017-03-30 15:49:23

标签: java html swing layout-manager gridbaglayout

我试图将JLabel文本居中并更改背景和前景色。我试图使用HTML:

JLabel listHeader = new JLabel("<html><span style='background-color:#555;color:White;text-align:center;'>Tables</span></html>"); 

但它似乎无法正常工作,如下图所示。

Image of the components

标签位于面板内,布局管理器设置为网格包布局,具有以下约束:

c.gridy=0;
c.gridx=0;
c.weighty=0;
c.weightx=1;
c.fill=GridBagConstraints.NONE;
c.anchor = GridBagConstraints.LINE_START;

我尝试使用fill BOTH,结果相同。

如何让标签占据所有宽度空间?

2 个答案:

答案 0 :(得分:0)

你可以尝试锚定在中心,而不是在线的起点。

答案 1 :(得分:0)

  

我尝试使用HTML:

不要使用HTML。

  

我试图将JLabel文本居中

将文本置于可以使用的标签可用空间中心:

label.setHorizontalAlignment(JLabel.CENTER);
  

并更改背景和前景色。

您需要将标签设为不透明:

label.setOpaque( true ):
label.setBackground( Color.RED );
  

我也尝试了填充BOTH,同样的结果。

好吧,我不认为你想要&#34;两个&#34;因为你只关心宽度。您可能还需要使用weightx约束。阅读How to Use GridBagLayout上Swing教程中的部分,了解有关使用约束的更多信息。

如果没有MCVE/SSCCE,我们无法准确了解您的行为。