如何设置 JLabel 以占用所有可用宽度 space?

How do you set a JLabel to take all the available width space?

我正在尝试使 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;

我也尝试填充 BOTH,结果相同。

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

您可以尝试锚定在中心,而不是在线的开头。

I tried to use HTML:

不要使用 HTML。

I'm trying to center the JLabel text

要使文本在标签可用的 space 中居中,您可以使用:

label.setHorizontalAlignment(JLabel.CENTER);

and to change the background and foreground color.

您需要使标签不透明:

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

I tried with fill BOTH as well, same result.

嗯,我认为您不需要 "BOTH",因为您只关心宽度。您可能还需要使用 weightx 约束。阅读有关 How to Use GridBagLayout 的 Swing 教程部分,了解有关使用约束的更多信息。

没有你的 MCVE/SSCCE 我们无法准确地看到你在做什么。