这似乎是一件简单的事情,但我无法让它工作。
我有一个BorderLayout
.我想将顶部用于标题栏。我想添加一个带有标签、按钮和其他组件的JPanel
。但是,边框布局的PAGE_START
部分不会左对齐面板。这是情况,在我尝试设置对齐的地方有评论。
我注意到,当我不向边框布局添加面板,而只是直接写入JLabel
时,默认情况下它会左对齐。
不过,这不是我想要的,因为我计划在BorderLayout.PAGE_START
标题区域中水平放置一个BoxLayout.X_AXIS
。似乎是一件合理的事情?
静态方法的Container
窗格参数只是主JFrame
上的单个面板。
public static void addComponentsToPane(Container pane)
{
JLabel jlabel = new JLabel("I want to left align this inside a JPanel");
// Doesn't work: jlabel.setAlignmentX(Component.LEFT_ALIGNMENT);
JPanel jpanel = new JPanel();
//Doesn't work: jlabel.setAlignmentX(Component.LEFT_ALIGNMENT);
jpanel.add(jlabel);
pane.add(jpanel, BorderLayout.PAGE_START);
// Other parts of the BoxLayout (works fine)
JButton button = new JButton("Button 2 (CENTER)");
button.setPreferredSize(new Dimension(200, 100));
pane.add(button, BorderLayout.CENTER);
button = new JButton("Button 3 (LINE_START)");
pane.add(button, BorderLayout.LINE_START);
button = new JButton("Long-Named Button 4 (PAGE_END)");
pane.add(button, BorderLayout.PAGE_END);
button = new JButton("5 (LINE_END)");
pane.add(button, BorderLayout.LINE_END);
}
即使我告诉面板将标签左对齐,它也不会显示为左对齐。
有谁知道我做错了什么?
默认情况下,JPanel 使用具有"中心"对齐方式的FlowLayout
。
如果您希望组件"左"对齐,则需要将面板上的布局设置为使用具有"左"对齐的FlowLayout
。
阅读FlowLayout
API,了解用于设置对齐方式的正确构造函数。
或者,您也可以阅读有关如何使用 FlowLayut 的 Swing 教程,该教程提供了构造函数和有效值来指定对齐方式。