如何正确对齐JLabel中的文本?

Gra*_*min 4 java swing jlabel right-align

我有以下代码:

JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

for(int xx =0; xx < 3; xx++)
{
    JLabel label = new JLabel("String");
    label.setPreferredSize(new Dimension(300,15));
    label.setHorizontalAlignment(JLabel.RIGHT);

    panel.add(label);
}
Run Code Online (Sandbox Code Playgroud)

这就是我希望文本看起来的样子:

[                         String]
[                         String]
[                         String]
Run Code Online (Sandbox Code Playgroud)

这就是它的样子

[String]
[String]
[String]
Run Code Online (Sandbox Code Playgroud)

由于某种原因,标签没有设置为我指定的首选大小,我认为因此,它没有正确对齐我的标签文本.但我不确定.任何帮助,将不胜感激.

dal*_*ez1 13

JLabel label = new JLabel("String", SwingConstants.RIGHT);
Run Code Online (Sandbox Code Playgroud)

:)


Ser*_*huk 5

我认为这取决于您正在使用的布局,在XY中(我记得在JBuilder中是某种布局)它应该可以工作,但在其他情况下可能会有问题.尝试将最小尺寸更改为首选尺寸.


Hei*_*bug 5

setPreferredSize/MinimumSize/MaximumSize方法取决于父组件的布局管理器(在本例中为面板).

首先尝试使用setMaximumSize而不是setPreferredSize,如果我没有错,应该使用BoxLayout.

另外:可能你必须使用和玩胶水:

panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
panel.add(Box.createHorizontalGlue());
panel.add(label);
panel.add(Box.createHorizontalGlue());
Run Code Online (Sandbox Code Playgroud)

如果你需要Y_AXIS BoxLayout,你也可以使用嵌套面板:

verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS));    
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
panel.add(Box.createHorizontalGlue());
panel.add(label);
panel.add(Box.createHorizontalGlue());
verticalPanel.add(panel);
Run Code Online (Sandbox Code Playgroud)