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();
};
};
我正忙于编写 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();
};
};