我正在创建一个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);
如何让按钮显示在最后一行的中心?
答案 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);