[英]Alignment of components in panel
我需要在JPanel
垂直对齐组件(2个JTextField
和1个JTextArea
),然后将该面板放置在已定义框架的中心。
我想要这样
我试图通过为面板设置不同的布局来做到这一点,但是我无法使其正常工作。 在下面的代码中,可以在面板上不做任何事情。 如果我将组件添加到面板,则其行为会有所不同。 组件在面板中水平显示。
public class DialogboxExample {
public static void main(String[] args) {
JFrame frame = new JFrame("BoxLayout Example X_AXIS");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel lblPhone = new JLabel("Name");
lblPhone.setBounds(65, 68, 46, 14);
frame.getContentPane().add(lblPhone);
JTextField textField_1 = new JTextField();
textField_1.setBounds(136, 65, 247, 22);
frame.getContentPane().add(textField_1);
textField_1.setColumns(10);
JLabel lblEmailId = new JLabel("Category");
lblEmailId.setBounds(65, 115, 70, 14);
frame.getContentPane().add(lblEmailId);
JTextField textField_2 = new JTextField();
textField_2.setBounds(136, 112, 247, 22);
frame.getContentPane().add(textField_2);
textField_2.setColumns(10);
JLabel lblAddress = new JLabel("Description");
lblAddress.setBounds(65, 162, 150, 14);
frame.getContentPane().add(lblAddress);
JTextArea textArea_1 = new JTextArea();
textArea_1.setBounds(136, 157, 300, 100);
frame.getContentPane().add(textArea_1);
frame.setSize(300, 300);
frame.getContentPane().add( panel, "Center");
frame.pack();
frame.setVisible(true);
}
}
我希望JTextField
和JTextArea
垂直堆叠。
有人可以帮我吗?
如果将GridLayout
添加到面板中,则效果很好,但是所有3个组件的组件大小均相同。
GridBagLayout
,我可能会使用GridBagLayout
( 而不是 GridLayout
)作为标签和文本字段/区域),然后将该面板放在另一个GridBagLayout
以将其放置在JFrame
。 (如果我正确地理解了需求,那么我不确定是否会这样做。) JLabel
作为Description
而不是TitledBorder
,则变得更加复杂。 setBounds(..)
将使用任何值得使用的布局忽略。 指定列以建议文本字段的宽度,并建议文本区域的列和行。 JFrame
来显示GUI,则DialogboxExample
不是非常准确。 可能应该改用JDialog
,但坚持使用框架可能会导致如下所示:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.