原文: https://javatutorial.net/java-swing-jframe-layouts

本教程通过示例和用法说明了各种 JFrmae 布局。

解释

Java AWT 包提供了许多不同的布局,例如边框布局,框布局,流式布局,网格布局等。这些布局管理器用于以特定方式排列组件。 布局用于按特定顺序管理组件。 以下是 Java 中一些常用布局的描述和示例。

边框布局

边框布局是最常用的布局之一。 这是JFrame中的默认布局。 它可以将组件定位在五个不同的区域,例如顶部,底部,左侧,右侧和中心。 在边框布局中,每个区域仅包含一个组件。 所有可用空间都放在中间。

使用:使用边框布局初始化内容窗格,并通过add方法向其中添加组件,并将布局作为参数。

以下示例显示以边框布局排列的组件。

  1. package javatutorial.net;
  2. import java.awt.BorderLayout;
  3. import javax.swing.JButton;
  4. import javax.swing.JFrame;
  5. public class BorderLayoutExample {
  6. BorderLayoutExample(){
  7. JFrame frame = new JFrame("Border Layout");
  8. JButton button,button1, button2, button3,button4;
  9. button = new JButton("left");
  10. button1 = new JButton("right");
  11. button2 = new JButton("top");
  12. button3 = new JButton("bottom");
  13. button4 = new JButton("center");
  14. frame.add(button,BorderLayout.WEST);
  15. frame.add(button1, BorderLayout.EAST);
  16. frame.add(button2, BorderLayout.NORTH);
  17. frame.add(button3, BorderLayout.SOUTH);
  18. frame.add(button4, BorderLayout.CENTER);
  19. frame.setSize(300,300);
  20. frame.setVisible(true);
  21. }
  22. public static void main(String[] args){
  23. new BorderLayoutExample();
  24. }
  25. }

这是边框布局的输出

Java SWING `JFrame`布局示例 - 图1

边框布局

流式布局

流式布局是常用的布局。 这是JPanel使用的默认布局。 它用于将组件排成一行或一行,例如从左到右或从右到左。 如果没有剩余空间,则它将组件排成一行。 Align 属性确定组件的对齐方式,如左,右,居中等。

使用:使用JFrame.setLayout(layout)设置JFrame布局,将流式布局作为参数传递。

下例显示以流式布局排列的组件

  1. package javatutorial.net;
  2. import java.awt.BorderLayout;
  3. import java.awt.FlowLayout;
  4. import javax.swing.JButton;
  5. import javax.swing.JFrame;
  6. public class FlowLayoutExample {
  7. FlowLayoutExample(){
  8. JFrame frame = new JFrame("Flow Layout");
  9. JButton button,button1, button2, button3,button4;
  10. button = new JButton("button 1");
  11. button1 = new JButton("button 2");
  12. button2 = new JButton("button 3");
  13. button3 = new JButton("button 4");
  14. button4 = new JButton("button 5");
  15. frame.add(button);
  16. frame.add(button1);
  17. frame.add(button2);
  18. frame.add(button3);
  19. frame.add(button4);
  20. frame.setLayout(new FlowLayout());
  21. frame.setSize(300,300);
  22. frame.setVisible(true);
  23. }
  24. public static void main(String[] args) {
  25. new FlowLayoutExample();
  26. }
  27. }

这是流式布局的示例

Java SWING `JFrame`布局示例 - 图2

流式布局

网格布局

网格布局将组件排列在矩形网格中。 它在单元中排列组件,每个单元具有相同的大小。 组件放置在列和行中。 GridLayout(int row, int column)采用两个参数,即columnrow

使用:使用JFrame.setLayout(layout)设置JFrame布局,将网格布局作为参数传递。

下面的示例显示以网格布局(2 行 3 列)排列的组件。

  1. package javatutorial.net;
  2. import java.awt.GridLayout;
  3. import javax.swing.JButton;
  4. import javax.swing.JFrame;
  5. public class gridLayoutExample {
  6. gridLayoutExample(){
  7. JFrame frame = new JFrame("Flow Layout");
  8. JButton button,button1, button2, button3,button4;
  9. button = new JButton("button 1");
  10. button1 = new JButton("button 2");
  11. button2 = new JButton("button 3");
  12. button3 = new JButton("button 4");
  13. button4 = new JButton("button 5");
  14. frame.add(button);
  15. frame.add(button1);
  16. frame.add(button2);
  17. frame.add(button3);
  18. frame.add(button4);
  19. frame.setLayout(new GridLayout(2,3));
  20. frame.setSize(300,300);
  21. frame.setVisible(true);
  22. }
  23. public static void main(String[] args) {
  24. new gridLayoutExample();
  25. }
  26. }

这是网格布局的输出

Java SWING `JFrame`布局示例 - 图3

网格布局

这是您可以下载的链接完整代码。