我有以下代码:
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);