< 今日知识点 >
- AWT
- 组件和容器
·
·
·
·
—01 第一个Frame窗口
package Gui.lesson01;
import java.awt.*;
//GUI的第一个界面
public class TestFrame {
public static void main(String[] args) {
//Frame JDK
Frame frame = new Frame("我的第一个Java图形界面窗口");
//需要设置可见性:长 宽
frame.setVisible(true);
//设置窗口大小
frame.setSize(400,400);
//设置背景颜色
// new Color();
frame.setBackground(new Color(211, 134, 239));
//弹出的初始位置
frame.setLocation(200,200);
//设置大小固定
frame.setResizable(false);
}
}
运行结果:
一个问题:窗口界面关不掉怎么办??
尝试回顾封装
package Gui.lesson01;
import java.awt.*;
public class TestFrame2 {
public static void main(String[] args) {
//展示多个窗口
new MyFrame(100,100,200,200,Color.blue);
new MyFrame(300,100,200,200,Color.RED);
new MyFrame(100,300,200,200,Color.orange);
new MyFrame(300,300,200,200,Color.pink);
}
}
class MyFrame extends Frame {
static int id = 0 ;// 可能存在多个窗口
public MyFrame(int x,int y,int w,int h,Color color){ //构造器
super("Myframe"+(++id));
setBounds(x,y,w,h);
setVisible(true);
setBackground(color);
}
}
运行结果:
·
·
·
—02 Panel面板
package Gui.lesson01;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//Panel 可以看成是一个空间,但是不能单独存在
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
//坐标和颜色
frame.setBackground(new Color(137, 115, 239));
frame.setBounds(300,300,500,500);
//panel设置坐标,相对于frame
panel.setBackground(new Color(233, 131, 245));
panel.setBounds(50,50,400,400);
//frame.add
frame.add(panel);
frame.setVisible(true);
//监听事件:监听窗口关闭时间 System.
// 适配器模式
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭的时候要做的事情
@Override
public void windowClosing(WindowEvent e) {
//结束程序
// super.windowClosing(e);
System.exit(0);
}
});
}
}
- ↑解决了关闭窗口的问题
·
·
·
—03 布局管理器
- 流式布局
package Gui.lesson01;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestFlowLayOut {
public static void main(String[] args) {
Frame frame = new Frame();
//按钮组件
Button button01 = new Button("button01");
Button button02 = new Button("button02");
Button button03 = new Button("button03");
//设置流式布局
frame.setLayout(new FlowLayout(FlowLayout.TRAILING));
frame.setSize(200,200);
//把按钮添加上去
frame.add(button01);
frame.add(button02);
frame.add(button03);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.exit(0);
}
});
}
}
运行结果:
- 东西南北中
package Gui.lesson01;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestBorderLayOut {
public static void main(String[] args) {
Frame frame = new Frame ("TsetBorderLayOut");
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(400,400);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.exit(0);
}
});
}
}
运行结果:
- 表格布局 Grid
package Gui.lesson01;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestGridLayOut {
public static void main(String[] args) {
Frame frame = new Frame ("TsetBorderLayOut");
Button east = new Button("btn1");
Button west = new Button("btn2");
Button south = new Button("btn3");
Button north = new Button("btn4");
Button center = new Button("btn5");
Button elsebtn = new Button("btn6");
frame.setLayout(new GridLayout(3,2));
frame.add(east);
frame.add(west);
frame.add(south);
frame.add(north);
frame.add(center);
frame.add(elsebtn);
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.exit(0);
}
});
}
}
运行结果:
总结:
1、Frame是一个顶级窗口
2、Panel无法单独显示,必须添加到某个容器中
3、布局管理器
- 流式布局
- 东西南北中
- 边界布局
4、设置大小,定位,背景颜色,可见性,事件监听。
·
·
·
—04 事件监听
- 当某个事件发生的时候,要干什么
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestActionEvent {
public static void main(String[] args) {
//按下一些按钮,触发一些事件
Frame frame = new Frame();
Button button = new Button();
//因为:addActionListener()需要一个ActionListener,所以我们需要构造一个Action Listener
MyActionListener myActionListener = new MyActionListener();
button.addActionListener(myActionListener);
frame.add(button,BorderLayout.CENTER);
frame.pack();
//关闭窗口
windowClose(frame);
frame.setVisible(true);
}
//关闭窗体的事件
private static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.exit(0);
}
});
}
}
class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("你点击了一下按钮");
}
}
运行结果:
↑ 点击按钮时打印一行字:你点击一下按钮