五种JAVA GUI布局管理的方式

1. 流式布局(FlowLayout)

定义:

通俗地说,流式布局就是根据窗口大小,自动改变窗口内组件的位置。例如:原窗口大小一行可以容纳10个BUTTON,但将窗口缩小后,每行仅能容纳5个BUTTON,此时原先的10个BUTTON中的五个就会自动排列到下一行。

示例:(省略panel的使用)

Hashset

package 布局管理;

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class Layout { //流式布局

public static void main(String[] args) {

Frame frame = new Frame(); //创建一个窗口

frame.setLayout(new FlowLayout(FlowLayout.LEFT)); //将窗口布局设置为流式布局,并设置向左对齐

Button button1 = new Button("button1"); //创建若干个按钮

Button button2 = new Button("button2");

Button button3 = new Button("button3");

Button button4 = new Button("button4");

Button button5 = new Button("button5");

frame.add(button1); //将按钮添加进窗口中

frame.add(button2);

frame.add(button3);

frame.add(button4);

frame.add(button5);

frame.setBounds(200,200,500,500); //设置窗口的位置与大小

frame.setVisible(true); //设置窗口可见性

frame.addWindowListener(new WindowAdapter() { //事件监听:关闭窗口

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

}

2. 东西南北中布局(BorderLayout)

定义:

东西南北中布局,顾名思义。将窗口分为东西南北中四个“块儿”,也可以称作上下左右中布局,便于理解。

示例:(省略panel的使用)

package 布局管理;

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class BorderLayout { //东西南北中布局

public static void main(String[] args) {

Frame frame = new Frame();

frame.setLayout(new java.awt.BorderLayout());

Button east = new Button("East");

east.setBackground(new Color(140, 172, 51));

Button west = new Button("West");

west.setBackground(new Color(140, 172, 51));

Button north = new Button("North");

north.setBackground(new Color(38, 222, 135));

Button south = new Button("South");

south.setBackground(new Color(38, 222, 135));

Button center = new Button("Center");

frame.add(east, java.awt.BorderLayout.EAST);

frame.add(west, java.awt.BorderLayout.WEST);

frame.add(north, java.awt.BorderLayout.NORTH);

frame.add(south, java.awt.BorderLayout.SOUTH);

frame.add(center, java.awt.BorderLayout.CENTER);

frame.setBounds(200,200,500,500);

frame.setVisible(true);

frame.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

}

3. 表格式布局

定义:

将窗口拆分为若干个表格(拆分为自己需要的表格),再往里添加组件。

示例:

GUI经常使用的“登录”、“注册”界面

package 布局管理;

import javafx.scene.control.PasswordField;

import javafx.scene.layout.Pane;

import sun.security.util.Password;

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.nio.charset.Charset;

public class GridLayout {

public static void main(String[] args) {

// System.out.println("file.encoding=" + System.getProperties().getProperty("file.encoding"));

// System.out.println("默认是:"+ Charset.defaultCharset().name());

Frame frame = new Frame("表格布局");

frame.setLayout(new java.awt.GridLayout(4,1)); //设置行列数

Panel panel1 = new Panel();

frame.add(panel1);

Panel panel2 = new Panel();

frame.add(panel2);

Panel panel3 = new Panel();

frame.add(panel3);

Panel panel4 = new Panel();

frame.add(panel4);

Label label = new Label("welcome to *** system");

label.setFont(new Font("宋体", Font.PLAIN, 26));

Label label1 = new Label("Account: ");

TextField textField = new TextField();

textField.setColumns(20);

Label label2 = new Label("Password: ");

TextField textField1 = new TextField(); //AWT没有passwordField

textField1.setColumns(20);

textField1.setEchoChar('*');

Button button = new Button("Login");

panel1.add(label);

panel2.add(label1);

panel2.add(textField);

panel3.add(label2);

panel3.add(textField1);

panel4.add(button);

frame.setBounds(200,200,500,250);

frame.setVisible(true);

frame.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

}

4. 我不要布局!!!

当设置 frame.setLayout(null) ;时,可以使用给panel设置坐标的方式控制布局,更具灵活性!

package AWT;

import javafx.scene.layout.Pane;

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.awt.event.WindowListener;

public class panel {

public static void main(String[] args) {

Frame frame = new Frame(); //new一个窗口出来

Panel panel = new Panel(); //new一个面板

Panel panel1 = new Panel(); //new一个面板

Panel panel2 = new Panel(); //new一个面板

frame.setLayout(null); //设置布局为空

frame.setBounds(200,200,500,500); //设置窗口位置大小

panel.setBounds(20,15,460,50); //设置第一个面板

panel.setBackground(new Color(253, 228,1)); //设置面板颜色

panel1.setBounds(20,70,100,415);

panel1.setBackground(new Color(0, 71, 254));

panel2.setBounds(130,70,350,415);

panel2.setBackground(new Color(1,1,1));

frame.add(panel); //面板加入到窗口中

frame.add(panel1);

frame.add(panel2);

frame.setVisible(true);

frame.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

}); {

}

}

}

5. 我都要!!!

为了使界面更加美观,可以使用多种布局的嵌套哦!

以上是 五种JAVA GUI布局管理的方式 的全部内容, 来源链接: utcz.com/z/354524.html

回到顶部