流式布局
以下内容来自B站狂神视频
Frame frame = new Frame();
//组件-按钮
Button button1 = new Button();
Button button2 = new Button();
Button button3 = new Button();
//设置为流式布局
frame.setLayout(new FlowLayout(FlowLayout.CENTER));
frame.setSize(200, 200);
//把按钮添加上去
frame.add(button1);
frame.add(button2);
frame.add(button3);
//窗口显示
frame.setVisible(true);
东南西北中布局
Frame frame = new Frame("TestBorderLayout");
Button east = new Button("East");
Button west = new Button("West");
Button South = new Button("South");
Button North = new Button("North");
Button Center = new Button("Center");
frame.add(east, BorderLayout.EAST);
frame.add(west, BorderLayout.WEST);
frame.add(South, BorderLayout.SOUTH);
frame.add(North, BorderLayout.NORTH);
frame.add(Center, BorderLayout.CENTER);
frame.setSize(200, 200);
frame.setVisible(true);
表格布局
Frame frame = new Frame("GridLayout");
Button but1 = new Button("but1");
Button but2 = new Button("but2");
Button but3 = new Button("but3");
Button but4 = new Button("but4");
Button but5 = new Button("but5");
Button but6 = new Button("but6");
//设置表格布局
frame.setLayout(new GridLayout(3, 2));
//填充
frame.add(but1);
frame.add(but2);
frame.add(but3);
frame.add(but4);
frame.add(but5);
frame.add(but6);
//java 函数 自动设置大小
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
示例
- 显示出图中按钮布局
Frame frame = new Frame("GridLayout");
Button but1 = new Button("but1");
Button but2 = new Button("but2");
Button but3 = new Button("but3");
Button but4 = new Button("but4");
Button but5 = new Button("but5");
Button but6 = new Button("but6");
//设置表格布局
frame.setLayout(new GridLayout(3, 2));
//填充
frame.add(but1);
frame.add(but2);
frame.add(but3);
frame.add(but4);
frame.add(but5);
frame.add(but6);
//java 函数 自动设置大小
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
- 简易计算器练习
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestCalc {
public static void main(String[] args) {
new Calculator();
}
}
class Calculator extends Frame {
public Calculator() {
//三个文本框
TextField num1 = new TextField(10);
TextField num2 = new TextField(10);
TextField num3 = new TextField(20);
//一个按钮
Button button = new Button("=");
button.addActionListener(new MyCalculatorListener(num1, num2, num3));
//一个标签
Label label = new Label("+");
//流式布局
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
}
/**
* 监听器类
*/
class MyCalculatorListener implements ActionListener {
//获取三个变量
private TextField num1, num2, num3;
public MyCalculatorListener(TextField num1, TextField num2, TextField num3) {
this.num1 = num1;
this.num2 = num2;
this.num3 = num3;
}
@Override
public void actionPerformed(ActionEvent e) {
//1、获得加数和被加数
int a = Integer.parseInt(num1.getText());
int b = Integer.parseInt(num2.getText());
//2、将值相加后放到第三个框
num3.setText("" + (a + b));
//3、清空前两个文本框
num1.setText("");
num2.setText("");
}
}
- 代码改造(对象.方法)
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestCalc {
public static void main(String[] args) {
new Calculator().loadFrame();
}
}
class Calculator extends Frame {
//属性
TextField num1, num2, num3;
//方法
public void loadFrame() {
//三个文本框
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(20);
//一个按钮
Button button = new Button("=");
//一个标签
Label label = new Label("+");
button.addActionListener(new MyCalculatorListener(this));
//流式布局
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
}
/**
* 监听器类
*/
class MyCalculatorListener implements ActionListener {
//获取三个变量
Calculator calculator = null;
public MyCalculatorListener(Calculator calculator) {
this.calculator = calculator;
}
@Override
public void actionPerformed(ActionEvent e) {
int n1 = Integer.parseInt(calculator.num1.getText());
int n2 = Integer.parseInt(calculator.num2.getText());
calculator.num3.setText("" + (n1 + n2));
calculator.num1.setText("");
calculator.num2.setText("");
}
}
- 完全改造为面向对象
- 内部内的最大好处就是,可以畅通无阻的访问外部的属性和方法
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestCalc {
public static void main(String[] args) {
new Calculator().loadFrame();
}
}
class Calculator extends Frame {
//属性
TextField num1, num2, num3;
public void loadFrame() {
//三个文本框
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(20);
//一个按钮
Button button = new Button("=");
//一个标签
Label label = new Label("+");
button.addActionListener(new MyCalculatorListener());
//流式布局
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
private class MyCalculatorListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
num3.setText("" + (n1 + n2));
num1.setText("");
num2.setText("");
}
}
}