在垂直框居中按钮

问题描述:

林创建一个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); 

我怎样才能让按钮出现在最后一行的中心?

我管理通过将按钮一个单独的盒子,然后使用的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);