Java Swing JPanel FlowLayout 高度问题

Java Swing JPanel FlowLayout Height Issues

我正忙于编写 Java Swing GUI,我需要并排放置两个 JPanes。

我有一个 Single JPane 用作父 JPane,其中包含 两个 Child JPanes 并排坐着,每个都有边框 分离。

每个 Child JPane 内部都有一个 JPane 和一个 GridBagLayout 定位元素。我的代码如下

import javax.swing.*;
import java.awt.*;

public class JavaGui extends JFrame {

   public static void main(String[] args) {

      JavaGui window = new JavaGui();

      // setup window here

      // main panels    

      JPanel container = new JPanel(new FlowLayout(FlowLayout.LEFT));
      JPanel panelLeft = new JPanel(new FlowLayout(FlowLayout.LEFT));
      JPanel panelRight = new JPanel(new FlowLayout(FlowLayout.LEFT));

      window.add(container);
      container.add(panelLeft);
      container.add(panelRight);

      // grid layout panels

      JPanel leftGrid = new JPanel(new GridBagLayout());
      JPanel rightGrid = new JPanel(new GridBagLayout());
      GridBagConstraints grid = new GridBagConstraints();

      panelLeft.add(leftGrid);
      panelRight.add(rightGrid);

      // test labels

      JLabel label01 = new JLabel("Label 01");
      JLabel label02 = new JLabel("Label 02");
      JLabel label03 = new JLabel("Label 03");
      JLabel label04 = new JLabel("Label 04");

      // add labels to grids

      grid.gridx = 0;
      grid.gridy = 0;
      leftGrid.add(label01, grid);
      grid.gridx = 0;
      grid.gridy = 0;
      rightGrid.add(label02, grid);
      grid.gridx = 0;
      grid.gridy = 1;
      rightGrid.add(label03, grid);
      grid.gridx = 0;
      grid.gridy = 2;
      rightGrid.add(label04, grid);

      // add borders to see sizes

      panelLeft.setBorder(BorderFactory.createLineBorder(Color.black));
      panelRight.setBorder(BorderFactory.createLineBorder(Color.black));

   };

};

这符合我的预期,但是当我添加边框以查看 我的左面板和右面板我看到它们有不同的高度 当它是 运行

时显示如下

当前

是否可以让这些面板的高度相同?

需要

使用带行和列参数的网格布局创建左网格和右网格
JPanel leftGrid = new JPanel(new GridLayout(3, 3));
JPanel rightGrid = new JPanel(new GridLayout(3, 3));`

我建议您尝试以下操作:

import javax.swing.*;
import java.awt.*;

public class JavaGui extends JFrame {

   public static void main(String[] args) {

      JavaGui window = new JavaGui();

      // setup window here

      // main panels    

      JPanel container = new JPanel(new FlowLayout(FlowLayout.LEFT));
      JPanel panelLeft = new JPanel(new GridBagLayout());
      JPanel panelRight = new JPanel(new GridBagLayout());
      JPanel centralPanel = new JPanel(new GridLayout(1, 2));
      centralPanel.add(panelLeft);
      centralPanel.add(panelRight);
      window.add(container);
      container.add(centralPanel);

      // grid layout panels

      GridBagConstraints grid = new GridBagConstraints();


      // test labels

      JLabel label01 = new JLabel("Label 01");
      JLabel label02 = new JLabel("Label 02");
      JLabel label03 = new JLabel("Label 03");
      JLabel label04 = new JLabel("Label 04");

      // add labels to grids

      grid.gridx = 0;
      grid.gridy = 0;
      panelLeft.add(label01, grid);
      grid.gridx = 0;
      grid.gridy = 0;
      panelRight.add(label02, grid);
      grid.gridx = 0;
      grid.gridy = 1;
      panelRight.add(label03, grid);
      grid.gridx = 0;
      grid.gridy = 2;
      panelRight.add(label04, grid);

      // add borders to see sizes

      panelLeft.setBorder(BorderFactory.createLineBorder(Color.black));
      panelRight.setBorder(BorderFactory.createLineBorder(Color.black));
      window.setVisible(true);
      window.pack();
   };

};