繁体   English   中英

面板中组件的对齐

[英]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);
    }
}

我希望JTextFieldJTextArea垂直堆叠。

有人可以帮我吗?

如果将GridLayout添加到面板中,则效果很好,但是所有3个组件的组件大小均相同。

  1. “我试图通过为面板设置不同的布局来做到这一点”很少有GUI使用仅一种布局。 在此GridBagLayout ,我可能会使用GridBagLayout而不是 GridLayout )作为标签和文本字段/区域),然后将该面板放在另一个GridBagLayout以将其放置在JFrame (如果我正确地理解了需求,那么我不确定是否会这样做。)
  2. 如果使用JLabel作为Description而不是TitledBorder ,则变得更加复杂。
  3. setBounds(..)将使用任何值得使用的布局忽略。 指定列以建议文本字段的宽度,并建议文本区域的列和行。
  4. 如果使用JFrame来显示GUI,则DialogboxExample不是非常准确。 可能应该改用JDialog ,但坚持使用框架可能会导致如下所示:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM