Java 面板中组件的对齐

Java 面板中组件的对齐,java,swing,layout-manager,Java,Swing,Layout Manager,我需要在JPanel中垂直对齐组件(2JTextFields和1JTextArea),然后将此面板放置在已定义框架的中心 我要的就是这样 我试图通过设置面板的不同布局来实现这一点,但我无法让它工作。在下面的代码中,面板没有任何内容是可以的。如果向配电盘添加组件,其行为会有所不同。组件在面板中水平显示 public class DialogboxExample { public static void main(String[] args) { JFrame frame

我需要在
JPanel
中垂直对齐组件(2
JTextField
s和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
s和
JTextArea
垂直堆叠

有人能帮我吗

如果我在面板中添加一个
GridLayout
,效果会很好,但所有3个组件的组件大小都相同

  • “我试图通过将不同的布局设置到面板来实现这一点”GUI很少只使用一种布局。在本例中,我可能会使用
    GridBagLayout
    nota
    GridBagLayout
    )作为标签和文本字段/区域),然后将该面板放在另一个
    GridBagLayout
    中,使其在
    JFrame
    中居中。(如果我正确理解要求,我不确定我是否理解。)
  • 如果使用
    JLabel
    作为
    说明
    而不是
    标题边框
    ,则会变得更加复杂
  • setBounds(..)
    将使用任何值得使用的布局忽略。指定列以建议文本字段的宽度以及文本区域的列和行的宽度
  • DialogboxExample
    不是很准确,因为使用了
    JFrame
    来显示GUI。它可能应该改为使用
    JDialog
    ,但坚持使用框架可能会导致如下结果:

  • 以最小尺寸提供ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则提供更大的宽度和高度,以显示应如何使用额外空间。请参见:嗨,安德鲁,您可以通过将组件设置到面板来提供上述框架的代码吗?因为我需要一个面板对象来将其设置为我的应用程序中框架的中心。因此,这不是编码服务。根据编号列表中的建议进行最佳尝试(至少第1、2和3点)。如果失败,请编辑您的帖子以显示您的尝试。谢谢Andrew!!第一个提到的点对我很有用,很高兴你把它整理好了。如果这有助于解决问题,请告诉我。