在垂直框居中按钮
问题描述:
林创建一个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);