将按钮置于垂直框中

时间:2016-09-28 05:27:42

标签: java alignment jbutton

我正在创建一个JDialog并向其中添加组件:

Window thisWin = SwingUtilities.getWindowAncestor(ancestorPanel);
final JDialog progressDialog = new JDialog(ancestorPanel, "There was an error");
progressDialog.setUndecorated(true);
JPanel contentPane = new JPanel();
contentPane.setPreferredSize(new Dimension(600, 600));

接下来,我添加一个JLabel,一个JTextArea,一个包含表的JScrollPane,最后添加一个按钮:

label.setAlignmentX(JLabel.LEFT_ALIGNMENT);
label.setHorizontalAlignment(JLabel.LEFT);
area.setAlignmentX(JLabel.LEFT_ALIGNMENT);
Box vBox1 = Box.createVerticalBox();
vBox1.add(label);
vBox1.add(Box.createVerticalStrut(7));
vBox1.add(area);
vBox1.add(Box.createVerticalStrut(7));
vBox1.add(scroll);
vBox1.add(Box.createVerticalStrut(7));
vBox1.add(button);
contentPane.add(vBox1);
progressDialog.setContentPane(contentPane);
progressDialog.pack();
progressDialog.setLocationRelativeTo(ancestorPanel);
progressDialog.setVisible(true);

除按钮外,结果完全符合我的要求。标签位于顶部(与左侧对齐),然后文本区域位于其下方(也与左侧对齐),然后在桌面下方,最后是按钮,但我似乎无法使按钮出现在行的中间。它出现在左边。我尝试使用以下行,但它不起作用:

button(JButton.CENTER_ALIGNMENT);

如何让按钮显示在最后一行的中心?

1 个答案:

答案 0 :(得分:0)

我设法通过将按钮添加到单独的Box然后使用Boxlayout将两个框添加到面板来解决上述问题:

Box vBox1 = Box.createVerticalBox();
vBox1.add(label);
vBox1.add(Box.createVerticalStrut(7));
vBox1.add(area1);
vBox1.add(Box.createVerticalStrut(7));
vBox1.add(scroll);
vBox1.add(Box.createVerticalStrut(7));
Box vBox2 = Box.createVerticalBox();
vBox2.add(button);
contentPane.add(vBox1, BorderLayout.CENTER);
contentPane.add(vBox2, BorderLayout.PAGE_END);