我有以下代码:

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);
}

这就是我希望文本显示的样子:
[                         String]
[                         String]
[                         String]

这就是它的样子
[String]
[String]
[String]

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

最佳答案

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());

如果需要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);

09-26 23:26
查看更多