package com.wang.lesson01;
import java.awt.*;
/**
* @Auther: 王海新
* @Date: 2021/2/6 11:44
* @Description:
*/
public class MyFrame extends Frame {
static int id = 0;//可能存在多个窗口,我们需要一个计数器
public MyFrame(int x, int y, int w, int h, Color color){
super("MyFrame"+(++id));
setBackground(color);
setBounds(x,y,w,h);
setVisible(true);
}
}
package com.wang.lesson01;
import java.awt.*;
/**
* @Auther: 王海新
* @Date: 2021/2/6 11:40
* @Description: 展示多个窗口 new
*/
public class TestFrame2 {
public static void main(String[] args) {
new MyFrame(100,100,200,200,Color.BLACK);
new MyFrame(300,100,200,200,Color.BLUE);
new MyFrame(100,300,200,200,Color.yellow);
new MyFrame(300,300,200,200,Color.red);
}
}
package com.wang.lesson01;
import java.awt.*;
/**
* @Auther: 王海新
* @Date: 2021/2/6 17:02
* @Description:流式布局
*/
public class TestFlowLayout {
public static void main(String[] args) {
Frame frame = new Frame();
//组件-按钮
Button button1 = new Button("button1");
Button button2 = new Button("button2");
Button button3 = new Button("button3");
//设置为流式布局
frame.setLayout(new FlowLayout());
//设置大小
frame.setSize(200,200);
//把按钮添加上去
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setVisible(true);
}
}
东南西北中
package com.wang.lesson01;
import java.awt.*;
/**
* @Auther: 王海新
* @Date: 2021/2/7 18:03
* @Description: 东西南北中
*/
public class TestBorderLayout {
public static void main(String[] args) {
//创建了一个面板
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);
}
}
表格布局Grid
package com.wang.lesson01;
import java.awt.*;
/**
* @Auther: 王海新
* @Date: 2021/2/7 18:16
* @Description: 表格布局
*/
public class TestGridLayout {
public static void main(String[] args) {
Frame frame = new Frame("TestGridLayout");
//创建了东西南北中四个按钮
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);
frame.pack();//java函数
frame.setVisible(true);
}
}
总结:小demo
制作这样一个面板
package com.wang.lesson01;
import java.awt.*;
/**
* @Auther: 王海新
* @Date: 2021/2/8 14:50
* @Description: 小结作业。
*/
public class ExDemo {
public static void main(String[] args) {
//总 Frame
Frame frame = new Frame();
frame.setSize(400,300);
frame.setLocation(300,400);
frame.setBackground(Color.BLACK);
frame.setVisible(true);
//将整体分割成两行一列,表格布局
frame.setLayout(new GridLayout(2,1));
//四个面板
Panel p1 = new Panel(new BorderLayout());
Panel p2 = new Panel(new GridLayout(2, 1));
//东南西北中布局
Panel p3 = new Panel(new BorderLayout());
Panel p4 = new Panel(new GridLayout(2, 2));
//上面ok
p1.add(new Button("East-1"),BorderLayout.EAST);
p1.add(new Button("West-1"),BorderLayout.WEST);
p2.add(new Button("p2-btn-1"));
p2.add(new Button("p2-btn-2"));
p1.add(p2,BorderLayout.CENTER);
//下面OK
p3.add(new Button("East-1"),BorderLayout.EAST);
p3.add(new Button("West-1"),BorderLayout.WEST);
for (int i = 0; i < 4; i++) {
p4.add(new Button("for-" + i));
}
p3.add(p4,BorderLayout.CENTER);
frame.add(p1);
frame.add(p3);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
总结:
Frame是一个顶级窗口
Panel无法单独显示,必须添加到某个容器中。
布局管理器
流式
东西南北中
表格
大小,定位,背景颜色,可见性,监听!
事件监听
事件监听:当某个事情发生的时候,干什么?
package com.wang.lesson01;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* @Auther: 王海新
* @Date: 2021/2/8 15:32
* @Description: 监听器
*/
public class TestActionEvent {
public static void main(String[] args) {
//按下按钮,触发一些事件
Frame frame = new Frame();
Button button = new Button();
//因为addActionListener();需要一个ActionListener(),所以我们去构造一个
MyActionListener myActionListener = new MyActionListener();
button.addActionListener(myActionListener);
frame.add(button,BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
windowClose(frame);//关闭窗口
}
//关闭窗口方法
public static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("aa");
}
}
多个按钮,共享一个监听
package com.wang.lesson01;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @Auther: 王海新
* @Date: 2021/2/9 11:54
* @Description: 两个按钮公用一个监听器
*/
public class TestActionTwo {
public static void main(String[] args) {
// 两个按钮,实现同一个监听器
// 开始 停止
Frame frame = new Frame("开始-停止");
Button button1 = new Button("start");
Button button2 = new Button("start");
//可以显示的定义触发会返回的命令,如果不显示定义,则会走默认的值
//可以多个按钮,只写一个监听器。
button2.setActionCommand("button-stop");
MyMonitor myMonitor = new MyMonitor();
button1.addActionListener(myMonitor);
button2.addActionListener(myMonitor);
frame.add(button1,BorderLayout.NORTH);
frame.add(button2,BorderLayout.SOUTH);
//自适应
frame.pack();
//显示面板
frame.setVisible(true);
}
}
class MyMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击了:msg"+ e.getActionCommand());
if (e.getActionCommand().equals("start")) {
//这里实现某个按钮的单独功能
}
}
}