📅  最后修改于: 2023-12-03 14:47:48.359000             🧑  作者: Mango
SWING是Java平台的一部分,用于构建图形用户界面(GUI)。它是一个图形用户界面工具包,提供了一组丰富的组件,如按钮、标签、文本框、下拉列表,以及更复杂的组件,如表格、树形结构等。SWING还提供了丰富的界面布局管理器。
SWING布局管理器是一种用于安排组件在容器中的方式。SWING提供了许多不同的布局管理器。
BorderLayout将容器划分为五个区域:北、南、东、西和中。组件可以放置在任何一个区域中,但是不能覆盖多个区域。如果没有任何组件放置在中心区域,则中心区域将自动扩展以填充剩余的空间。
使用示例:
JFrame frame = new JFrame("BorderLayout Example");
JButton northButton = new JButton("North");
frame.add(northButton, BorderLayout.NORTH);
JButton southButton = new JButton("South");
frame.add(southButton, BorderLayout.SOUTH);
JButton eastButton = new JButton("East");
frame.add(eastButton, BorderLayout.EAST);
JButton westButton = new JButton("West");
frame.add(westButton, BorderLayout.WEST);
JTextArea centerTextArea = new JTextArea();
frame.add(centerTextArea, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
FlowLayout按照从左到右、从上到下的顺序依次排列组件。如果容器不能容纳所有组件,则会自动换行。
使用示例:
JFrame frame = new JFrame("FlowLayout Example");
JButton button1 = new JButton("Button 1");
frame.add(button1);
JButton button2 = new JButton("Button 2");
frame.add(button2);
JButton button3 = new JButton("Button 3");
frame.add(button3);
JButton button4 = new JButton("Button 4");
frame.add(button4);
frame.setLayout(new FlowLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
GridLayout将容器分成一系列指定数量的行和列,组件依次按照行和列的顺序排列。所有组件都会被调整为相同的大小。
使用示例:
JFrame frame = new JFrame("GridLayout Example");
JButton button1 = new JButton("Button 1");
frame.add(button1);
JButton button2 = new JButton("Button 2");
frame.add(button2);
JButton button3 = new JButton("Button 3");
frame.add(button3);
JButton button4 = new JButton("Button 4");
frame.add(button4);
frame.setLayout(new GridLayout(2, 2));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
BoxLayout按照沿着一个指定的轴线(水平或垂直)排列组件。在Box容器中,组件可以被嵌套在其他组件之中以达到更复杂的布局效果。
使用示例:
JFrame frame = new JFrame("BoxLayout Example");
JButton button1 = new JButton("Button 1");
frame.add(button1);
JButton button2 = new JButton("Button 2");
frame.add(button2);
JButton button3 = new JButton("Button 3");
frame.add(button3);
Box horizontalBox = Box.createHorizontalBox();
horizontalBox.add(Box.createHorizontalGlue());
horizontalBox.add(button1);
horizontalBox.add(Box.createHorizontalStrut(10));
horizontalBox.add(button2);
horizontalBox.add(Box.createHorizontalStrut(10));
horizontalBox.add(button3);
horizontalBox.add(Box.createHorizontalGlue());
frame.add(horizontalBox);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
GroupLayout支持创建复杂的GUI布局,允许你以异步方式修改布局容器中的组件。此布局管理器适用于图形用户界面(GUI)设计器,将自动生成并生成组件的嵌套声明。尤其是在与其他Swing组件结合使用时,如JTextField、JButton等。
使用示例:
JFrame frame = new JFrame("GroupLayout Example");
JLabel label1 = new JLabel("Name:");
JTextField textField1 = new JTextField();
JLabel label2 = new JLabel("Password:");
JTextField textField2 = new JTextField();
GroupLayout layout = new GroupLayout(frame.getContentPane());
frame.getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(label1)
.addComponent(label2))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(textField1)
.addComponent(textField2)))
);
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label1)
.addComponent(textField1))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label2)
.addComponent(textField2)))
);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
SWING提供了丰富的布局管理器,可以支持创建各种复杂的图形用户界面。不同的布局管理器适合不同的场景,需要根据实际需求选择。