没有空格的GUI显得"拥挤"。 如何提供空白而不诉诸显式设置组件的位置或大小? -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------
例如CardLayout(int,int),FlowLayout(int,int,int)和GridLayout(int,int,int,int),另一个示例GridLayout(int,int,int,int)和GridBagLayout()使用GridBagConstraints.insets
使用支持语义术语上的空白的LayoutManager。 您会看到它的到来,::) MigLayout可以帮助您:定义一个网格以及它们之间的间隙,例如相关的,不相关的段落-仅添加组件
使用各种LayoutManagers可以在各种组件之间提供间隔。
1.)BorderLayout:
重载的构造方法:BorderLayout(int horizo??ntalGap,int verticalGap)
获取和设置方法
对于水平间距:BorderLayout.getHgap()和BorderLayout.setHgap(int hgap)
对于垂直间距:BorderLayout.getVgap()和BorderLayout.setVgap()
2.)FlowLayout:
重载的构造方法:FlowLayout(int align,int hgap,int vgap)
获取和设置方法
对于水平间距:FlowLayout.getHgap()和FlowLayout.setHgap(int hgap)
对于垂直间距:FlowLayout.getVgap()和FlowLayout.setVgap()
3.)GridLayout:
重载的构造方法:GridLayout(int行,int列,int hgap,int vgap)
获取和设置方法
对于水平间距:GridLayout.getHgap()和GridLayout.setHgap(int hgap)
对于垂直间距:GridLayout.getVgap()和GridLayout.setVgap()
4.)GridBagLayout:
GridBagConstraints.insets
5.)CardLayout(示例):
CardLayout(int hGap,int vGap)
显示操作中所有构造函数的示例:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LayoutExample {
private final int hGap = 5;
private final int vGap = 5;
private String[] borderConstraints = {
BorderLayout.PAGE_START,
BorderLayout.LINE_START,
BorderLayout.CENTER,
BorderLayout.LINE_END,
BorderLayout.PAGE_END
};
private JButton[] buttons;
private GridBagConstraints gbc;
private JPanel borderPanel;
private JPanel flowPanel;
private JPanel gridPanel;
private JPanel gridBagPanel;
private JPanel cardPanel;
public LayoutExample() {
buttons = new JButton[16];
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.FIRST_LINE_START;
gbc.insets = new Insets(hGap, vGap, hGap, vGap);
}
private void displayGUI() {
JFrame frame = new JFrame("Layout Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPane = new JPanel(
new GridLayout(0, 1, hGap, vGap));
contentPane.setBorder(
BorderFactory.createEmptyBorder(hGap, vGap, hGap, vGap));
borderPanel = new JPanel(new BorderLayout(hGap, vGap));
borderPanel.setBorder(
BorderFactory.createTitledBorder("BorderLayout"));
borderPanel.setOpaque(true);
borderPanel.setBackground(Color.WHITE);
for (int i = 0; i < 5; i++) {
buttons[i] = new JButton(borderConstraints[i]);
borderPanel.add(buttons[i], borderConstraints[i]);
}
contentPane.add(borderPanel);
flowPanel = new JPanel(new FlowLayout(
FlowLayout.CENTER, hGap, vGap));
flowPanel.setBorder(
BorderFactory.createTitledBorder("FlowLayout"));
flowPanel.setOpaque(true);
flowPanel.setBackground(Color.WHITE);
for (int i = 5; i < 8; i++) {
buttons[i] = new JButton(Integer.toString(i));
flowPanel.add(buttons[i]);
}
contentPane.add(flowPanel);
gridPanel = new JPanel(new GridLayout(2, 2, hGap, vGap));
gridPanel.setBorder