面板中组件的对齐

时间:2019-05-24 11:52:00

标签: java swing layout-manager

我需要在JTextField中垂直对齐组件(2个JTextArea和1个JPanel),然后将该面板放置在已定义框架的中心。

我想要这样。

我试图通过为面板设置不同的布局来做到这一点,但是我无法使其正常工作。在下面的代码中,可以在面板上不做任何事情。如果我将组件添加到面板,则其行为会有所不同。组件在面板中水平显示。

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 个答案:

答案 0 :(得分:1)

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

enter image description here