如何让 JButton 低于 JTextFields

How to get JButton below the JTextFields

我为我的 GUI 创建了一个 GridLayout 以显示 6 行和 4 列。我试图让 "Calculate" 和 "Exit" 的两个按钮显示在第 6 行。第 5 行(重量标签和文本字段)只有四个中的两个 pane.add。我只是想让计算和退出按钮位于它们自己的行上。我试着做 pane.add();填补空白,无法让它发挥作用。我缺少什么才能让按钮在他们自己的行上?

基本上我有

    pane.setLayout(new GridLayout(6, 4)); 

    pane.add(score1L);
    pane.add(score1TF);
    pane.add(weight1L);
    pane.add(weight1TF);
    pane.add(score2L);
    pane.add(score2TF);
    pane.add(weight2L);
    pane.add(weight2TF);
    pane.add(score3L);
    pane.add(score3TF);
    pane.add(weight3L);
    pane.add(weight3TF);
    pane.add(score4L);
    pane.add(score4TF);
    pane.add(weight4L);
    pane.add(weight4TF);

    pane.add(weightAvgL);
    pane.add(weightAvgTF);

    pane.add(calculateB);
    pane.add(exitB);

可能的选项:

  • 添加空 JLabel 以填补任何空白。
  • 使用混合布局 -- 嵌套 JPanel,每个都使用自己的布局并向它们添加组件。例如,整体 JPanel 可以使用 BorderLayout。 textfields/labels 可以在使用 JPanel 的 GridLayout 或 GridBagLayout 中添加 BorderLayout.CENTER 到主 JPanel。 JButton 可以使用 JPanel 保存在它们自己的 GridLayout 中,然后将其添加 BorderLayout.PAGE_END 到主 JPanel。
  • 使用允许更复杂布局的布局管理器,例如 GridBagLayout,或者更好的可能是第 3 方布局管理器,例如 MigLayout。
  • 也许最好的方法是使用 JTable 来保存数据网格,将其添加到 JScrollPane,然后将按钮放在 JScrollPane 下方。