swing常用布局

Swing是Java中的一个GUI库,它提供了多种布局管理器来帮助我们更方便地设计界面。本文将介绍Swing中常用的布局管理器:FlowLayout、BorderLayout、GridLayout、GridBagLayout、BoxLayout、CardLayout和SpringLayout,并提供每个布局管理器的使用方法和示例。

1. FlowLayout

FlowLayout是一个简单的布局管理器,它将组件一个接一个地排列,直到它们填满了容器的一行。然后,它会自动换行并继续排列下一行。默认情况下,FlowLayout会在组件之间添加一些间隙。

使用方法:

```

JPanel panel = new JPanel(new FlowLayout());

```

示例:

```

import javax.swing.*;

import java.awt.*;

public class FlowLayoutExample {

public static void main(String[] args) {

JFrame frame = new JFrame("FlowLayout Example");

JPanel panel = new JPanel(new FlowLayout());

panel.add(new JButton("Button 1"));

panel.add(new JButton("Button 2"));

panel.add(new JButton("Button 3"));

panel.add(new JButton("Button 4"));

panel.add(new JButton("Button 5"));

frame.setContentPane(panel);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

}

```

2. BorderLayout

BorderLayout是另一个常用的布局管理器,它将组件放置在一个类似于方位的结构中,即上、下、左、右和中间。每个组件只能放置在一个方位中。

使用方法:

```

JPanel panel = new JPanel(new BorderLayout());

```

示例:

```

import javax.swing.*;

import java.awt.*;

public class BorderLayoutExample {

public static void main(String[] args) {

JFrame frame = new JFrame("BorderLayout Example");

JPanel panel = new JPanel(new BorderLayout());

panel.add(new JButton("North"), BorderLayout.NORTH);

panel.add(new JButton("South"), BorderLayout.SOUTH);

panel.add(new JButton("West"), BorderLayout.WEST);

panel.add(new JButton("East"), BorderLayout.EAST);

panel.add(new JButton("Center"), BorderLayout.CENTER);

frame.setContentPane(panel);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

}

```

3. GridLayout

GridLayout将组件放置在一个矩形网格中,所有的行和列都具有相同的大小。GridLayout使用两个参数:行和列,用于指定网格的大小。

使用方法:

```

JPanel panel = new JPanel(new GridLayout(rows, columns));

```

示例:

```

import javax.swing.*;

import java.awt.*;

public class GridLayoutExample {

public static void main(String[] args) {

JFrame frame = new JFrame("GridLayout Example");

JPanel panel = new JPanel(new GridLayout(2, 3));

panel.add(new JButton("Button 1"));

panel.add(new JButton("Button 2"));

panel.add(new JButton("Button 3"));

panel.add(new JButton("Button 4"));

panel.add(new JButton("Button 5"));

panel.add(new JButton("Button 6"));

frame.setContentPane(panel);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

}

```

4. GridBagLayout

GridBagLayout允许您以一种非常灵活的方式进行布局,可以对每个组件使用不同的大小、重量、对齐方式和填充方式。由于其高度的灵活性,GridBagLayout往往是使用Swing GUI时最常用的布局。

使用方法:

```

JPanel panel = new JPanel(new GridBagLayout());

```

示例:

```

import javax.swing.*;

import java.awt.*;

public class GridBagLayoutExample {

public static void main(String[] args) {

JFrame frame = new JFrame("GridBagLayout Example");

JPanel panel = new JPanel(new GridBagLayout());

GridBagConstraints c = new GridBagConstraints();

c.fill = GridBagConstraints.HORIZONTAL;

c.gridx = 0;

c.gridy = 0;

panel.add(new JButton("Button 1"), c);

c.fill = GridBagConstraints.HORIZONTAL;

c.gridx = 1;

c.gridy = 0;

panel.add(new JButton("Button 2"), c);

c.fill = GridBagConstraints.HORIZONTAL;

c.ipady = 40;

c.gridx = 0;

c.gridy = 1;

c.gridwidth = 2;

panel.add(new JButton("Button 3"), c);

frame.setContentPane(panel);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

}

```

5. BoxLayout

BoxLayout在一个方向上布置组件,可以是水平或垂直方向,它需要一个单独的容器来进行布局。

使用方法:

```

JPanel panel = new JPanel();

BoxLayout boxLayout = new BoxLayout(panel, BoxLayout.Y_AXIS);

panel.setLayout(boxLayout);

```

示例:

```

import javax.swing.*;

import java.awt.*;

public class BoxLayoutExample {

public static void main(String[] args) {

JFrame frame = new JFrame("BoxLayout Example");

JPanel panel = new JPanel();

BoxLayout boxLayout = new BoxLayout(panel, BoxLayout.Y_AXIS);

panel.setLayout(boxLayout);

panel.add(new JButton("Button 1"));

panel.add(new JButton("Button 2"));

panel.add(new JButton("Button 3"));

panel.add(new JButton("Button 4"));

panel.add(new JButton("Button 5"));

frame.setContentPane(panel);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

}

```

6. CardLayout

CardLayout允许您在容器中轻松切换不同的组件,只有当前所选组件可见。它通常用于创建向导或控制面板等多页应用程序。

使用方法:

```

JPanel panel = new JPanel(new CardLayout());

```

示例:

```

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class CardLayoutExample {

public static void main(String[] args) {

JFrame frame = new JFrame("CardLayout Example");

JPanel panel = new JPanel(new CardLayout());

JButton button1 = new JButton("Card 1");

button1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

CardLayout cardLayout = (CardLayout)panel.getLayout();

cardLayout.show(panel, "1");

}

});

JButton button2 = new JButton("Card 2");

button2.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

CardLayout cardLayout = (CardLayout)panel.getLayout();

cardLayout.show(panel, "2");

}

});

JPanel card1 = new JPanel();

card1.add(new JLabel("This is Card 1"));

JPanel card2 = new JPanel();

card2.add(new JLabel("This is Card 2"));

panel.add(card1, "1");

panel.add(card2, "2");

frame.setContentPane(panel);

JPanel buttonPanel = new JPanel(new FlowLayout());

buttonPanel.add(button1);

buttonPanel.add(button2);

frame.add(buttonPanel, BorderLayout.SOUTH);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

}

```

7. SpringLayout

SpringLayout是一个高度灵活的布局管理器,允许您在两个组件之间指定精确的距离,在组件内部创建弹簧约束条件,以及设置多个相等的间距等。

使用方法:

```

JPanel panel = new JPanel(new SpringLayout());

```

示例:

```

import javax.swing.*;

import javax.swing.SpringLayout.*;

import java.awt.*;

public class SpringLayoutExample {

public static void main(String[] args) {

JFrame frame = new JFrame("SpringLayout Example");

JPanel panel = new JPanel(new SpringLayout());

JLabel label1 = new JLabel("Name:", JLabel.TRAILING);

panel.add(label1);

JTextField textField1 = new JTextField(10);

label1.setLabelFor(textField1);

panel.add(textField1);

JLabel label2 = new JLabel("Age:", JLabel.TRAILING);

panel.add(label2);

JTextField textField2 = new JTextField(10);

label2.setLabelFor(textField2);

panel.add(textField2);

SpringUtilities.makeCompactGrid(panel, 2, 2, 6, 6, 6, 6);

frame.setContentPane(panel);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

}

```

以上是关于Swing常用的七种布局管理器的介绍和使用方法。在实际开发中,我们可以根据需要选择适合的布局管理器来布置组件,以便更好地设计出UI界面。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(97) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部