Java 如何将多个JTextfields放置在BorderLayout中心的不同行上?

Java 如何将多个JTextfields放置在BorderLayout中心的不同行上?,java,Java,因此,首先,我将文本字段及其标签添加到单独的面板中,因为我希望它们彼此对齐,我通过流布局添加它们 //add them in Flow Layout panel.add(label_1);panel.add(file_name); pane2.add(label_2);pane2.add(h_link); pane3.add(label_3);pane3.add(pages); 接下来我想做的是使用BorderLayout添加它们

因此,首先,我将文本字段及其标签添加到单独的面板中,因为我希望它们彼此对齐,我通过流布局添加它们

        //add them in Flow Layout
        panel.add(label_1);panel.add(file_name);
        pane2.add(label_2);pane2.add(h_link);
        pane3.add(label_3);pane3.add(pages);
接下来我想做的是使用BorderLayout添加它们,使它们都位于窗口的中心。此外,我想添加提交按钮的细节

        frame.getContentPane().add(BorderLayout.CENTER, panel);
        frame.getContentPane().add(BorderLayout.CENTER, pane2);
        frame.getContentPane().add(BorderLayout.CENTER, pane3);
        frame.getContentPane().add(BorderLayout.SOUTH, submit);
        frame.setVisible(true);
当我写这篇文章时,我没有得到我想要的结果,附带的屏幕截图显示了我不想要的结果框架。 当然,如果你对如何更有效地做这件事有任何建议,请分享


解决这一问题的关键是嵌套
JPanels
,每个都使用自己的布局,从而允许您有效地嵌套布局:

  • JPanel
    放置在
    BorderLayout.CENTER位置
  • JPanel
    一个
    GridLayout
    ,一个允许多行一列,例如
    newgridlayout(0,1)
  • 将您的
    JTextField
    s添加到
    JPanel

另一种方法是简单地使用一个JTable,一个具有单列和多行的JTable



另一种方法——如果您试图从JLabel/JTextField网格中的用户那里获得输入——是使用GridBagLayout将组件很好地分隔在一起

解决这一问题的关键是嵌套
JPanels,每个都使用自己的布局,从而允许您有效地嵌套布局:

  • JPanel
    放置在
    BorderLayout.CENTER位置
  • JPanel
    一个
    GridLayout
    ,一个允许多行一列,例如
    newgridlayout(0,1)
  • 将您的
    JTextField
    s添加到
    JPanel

另一种方法是简单地使用一个JTable,一个具有单列和多行的JTable



另一种方法——如果您试图从JLabel/JTextField网格中的用户那里获得输入——是使用GridBagLayout将组件很好地分隔在一起

我找不到附加的屏幕截图,但在BorderLayout的每个位置(例如中心)只能有一个组件。最终在嵌套的JPanel中使用GridLayout(或GridBagLayout、BoxLayout等)(Obs:不再需要
getContentPane()
)我找不到附加的屏幕截图,但BorderLayout的每个位置(例如中心)只能有一个组件。最终在嵌套的JPanel中使用GridLayout(或GridBagLayout、BoxLayout等)(Obs:不再需要
getContentPane()