2016-09-28 99 views
0

林創建一個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

我管理通過將按鈕一個單獨的盒子,然後使用的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);