package com.gui.lesson01;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//GUI编程课堂练习 exercise--练习 2023.3.14
public class ExerciseDemo {
public static void main(String[] args) {
//总的Frame 窗口
Frame frame = new Frame();//窗口
frame.setSize(400,300);//设置面板大小为:长400,宽300
frame.setLocation(300,400);//设置窗口摆放的初始位置
frame.setBackground(Color.BLACK);//设置面板背景颜色为黑色
frame.setVisible(true);//设置可见
frame.setLayout(new GridLayout(2,1));//rows--行,cols--列 gridlayout--表格布局
//4个面板
Panel p1 = new Panel(new BorderLayout());//第一个面板里放一个东西南北中布局,到这里将p1放进frame里是两行一列的样子
Panel p2 = new Panel(new GridLayout(2,1));//第二个面板里放一个表格布局(2行一列)GridLayout,到这里是将上半框架分割完成,上半只差按钮没有放进去了
Panel p3 = new Panel(new BorderLayout());//第三个面板里放一个东西南北中布局BorderLayout--p3、p4拼接出下半,按钮没有放进去
Panel p4 = new Panel(new GridLayout(2,2));//第四个面板里放一个表格布局(2行2列)
//上半部分
p1.add(new Button("East-1"),BorderLayout.EAST);//第一个面板里放第一个按钮,位置最右边,按钮名称-“East-1”,
// 因为下面面板可能还会有East,所以这里命名为这个,下一个命名为:East-2,把这个按钮放进第一个面板布局里--BorderLayout.EAST
p1.add(new Button("West-1"),BorderLayout.WEST);//第一个面板里放第二个按钮,位置最左边,按钮名称-“West-1”,
// 因为下面面板可能还会有West,所以这里命名为这个,下一个命名为:West-2,把这个按钮放进第一个面板布局里--BorderLayout.EAST
p2.add(new Button("p2-btn-1"));//第二个面板里放中间的两个按钮
p2.add(new Button("p2-btn-2"));
p1.add(p2,BorderLayout.CENTER);//将第二个面板p2放进第一个面板p1东西南北中布局的中间
//下半部分
p3.add(new Button("East-2"),BorderLayout.EAST);
p3.add(new Button("West-2"),BorderLayout.WEST);
//中间的四个按钮放第四个面板里,写一个for放四个按钮,节省资源,因为四个都在一个面板里,可用for来完成
for (int i = 0; i < 4; i++){
p4.add(new Button("for-" + i));
}
p3.add(p4,BorderLayout.CENTER);//将第四个面板p4放进第三个面板p3东西南北中布局的中间
frame.add(p1);//最后将p1面板和p3面板放进窗口里面,因为p2面板放在p1面板里面了,p4面板放在p3面板里面了,所以这里只用把p1和p3面板放进窗口frame里就行了
frame.add(p3);
//关闭窗口
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭的时候需要做的事情
@Override
public void windowActivated(WindowEvent e) {
//结束程序
System.exit(0);//括号里为e 的话是以异常的退出
}
});
}
}
//
package com.gui.lesson01;
//2023.3.13 GUI编程 东西南北中布局学习
import java.awt.*;
public class TestBorderLayout {
public static void main(String[] args) {
Frame frame = new Frame("TestBorderLayout");//title--标题
Button east = new Button("East");//East--东
Button west = new Button("West");//West--西
Button south = new Button("South");//South--南
Button north = new Button("North");//North--北
Button center = new Button("Center");//Center--中
frame.add(east, BorderLayout.EAST);//border--肢体
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);//设置可见
}
}
//
package com.gui.lesson01;
//2023.3.13 GUI编程 流式布局学习
import java.awt.*;
public class TestFlowLayout {
public static void main(String[] args) {
Frame frame = new Frame();
//组件--按钮(button)
Button button1 = new Button("button1");//括号里写按钮的名字(自己想要按钮叫啥就写啥) --label--标签
Button button2 = new Button("button2");
Button button3 = new Button("button3");
//设置为流式布局
// frame.setLayout(new FlowLayout());
frame.setLayout(new FlowLayout(FlowLayout.LEFT));//按钮在左边 left-左
frame.setLayout(new FlowLayout(FlowLayout.RIGHT));//按钮在右边 right-右
frame.setLayout(new FlowLayout(FlowLayout.CENTER));//按钮在中间 center-中间
frame.setSize(200,200);
//把按钮加上去
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setVisible(true);
}
}
//
package com.gui.lesson01;
import java.awt.*;
//2023.3.11 GUI编程---Frame(窗口) GUI的第一个界面
public class TestFrame {
public static void main(String[] args) {
//Frame,JDk,学会看源码
Frame frame = new Frame("我的第一个Java图像窗口!");
//需要设置可见性
frame.setVisible(true);
//设置窗口大小 width(长) and height(宽)
frame.setSize(400,400);
//设置背景颜色 Color类
frame.setBackground(Color.blue);
// frame.setBackground(new Color(154, 65, 65));//自己设定一个颜色,点左边颜色块可以取色(自己想要的颜色,参数跟随选取的自己变换);
//弹出的初始位置
frame.setLocation(200,200);
//设置大小固定
frame.setResizable(false);//--加上这句窗口就不可以自由拉伸长和宽,大小固定了
//有以上这些代码建立了一个蓝色的窗口,但是窗口关闭不了
//停止运行程序窗口就关闭了
}
}
//
package com.gui.lesson01;
import java.awt.*;
//2023.3.11 GUI编程---Frame(窗口) GUI的第一个界面
public class TestFrame {
public static void main(String[] args) {
//Frame,JDk,学会看源码
Frame frame = new Frame("我的第一个Java图像窗口!");
//需要设置可见性
frame.setVisible(true);
//设置窗口大小 width(长) and height(宽)
frame.setSize(400,400);
//设置背景颜色 Color类
frame.setBackground(Color.blue);
// frame.setBackground(new Color(154, 65, 65));//自己设定一个颜色,点左边颜色块可以取色(自己想要的颜色,参数跟随选取的自己变换);
//弹出的初始位置
frame.setLocation(200,200);
//设置大小固定
frame.setResizable(false);//--加上这句窗口就不可以自由拉伸长和宽,大小固定了
//有以上这些代码建立了一个蓝色的窗口,但是窗口关闭不了
//停止运行程序窗口就关闭了
}
}
//
package com.gui.lesson01;
import java.awt.*;
//2023.3.11 GUI编程 ---展示多个窗口
//第一个类
public class TestFrame02 {
public static void main(String[] args) {
//这里看自己多个窗口要怎么排列,修改x y z w h 的参数
MyFrame myFrame1 = new MyFrame(100, 100, 200,200, Color.blue);
MyFrame myFrame2 = new MyFrame(300, 100, 200,200,Color.yellow);
MyFrame myFrame3 = new MyFrame(100, 300, 200,200, Color.red);
MyFrame myFrame4 = new MyFrame(300, 300, 200,200, Color.MAGENTA);//MAGENTA--粉红色
}
}
//第二个类--两个类写在一个里面
class MyFrame extends Frame {
static int id = 0;//可能存在多个窗口,我们需要一个计数器
public MyFrame(int x, int y, int w, int h, Color color){ //定义x、y两个变量--初始位置,定义 w、h 两变量 --宽、高
super("MyFrame" + (++id)); //封装,子类调父类方法关键字super ++id--每次新建自增一
setBounds(x, y, w, h);//setBounds() --这个方法可以直接设置四个属性
setBackground(color);//设置背景
setVisible(true);
}
}
//
package com.gui.lesson01;
import java.awt.*;
//2023.3.13 GUI编程--Grid布局 Grid--网格布局/表格布局
public class TestGridLayout {
public static void main(String[] args) {
Frame frame = new Frame("TestGridLayout");//title--标题
Button btn1 = new Button("btn1");
Button btn2 = new Button("btn2");
Button btn3 = new Button("btn3");
Button btn4 = new Button("btn4");
Button btn5 = new Button("btn5");
Button btn6 = new Button("btn6");
frame.setLayout(new GridLayout(3,2));//rows--行,cols--列 设置这个表格布局为3行2列
frame.add(btn1);
frame.add(btn2);
frame.add(btn3);
frame.add(btn4);
frame.add(btn5);
frame.add(btn6);
frame.pack();//Java 函数! --系统自动根据最优方式布局 --不加这一句就写死的布局(按照自己想要达到的布局效果)
frame.setVisible(true);//设置可见
}
}
//
package com.gui.lesson01;标签:01,Java,--,frame,public,add,new,Button From: https://www.cnblogs.com/CaiDingChao/p/17717677.html
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;//方法1需要的包
//2023.3.12 --GUI编程 --Panel--记住,救赎之路,逃离在路上
//Panel---面板---可以看成是一个空间,但是不能单独存在,要放在Frame里面
//面板--解决了窗口关闭事件
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
//Panel-布局的概念
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
//坐标
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(86, 198, 86));
//panel 设置坐标,相对于frame
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(253, 0, 155));
//frame.add(panel)
frame.add(panel);
frame.setVisible(true);
//监听事件,监听窗口关闭事件 System.exit(e)
//方法1:采用这种方法只是为了关闭一个窗口不好 frame.addWindowListener(new WindowListener() {//括号里需要什么 就 new 什么
// @Override
// public void windowOpened(WindowEvent e) {
//
// }
//
// @Override
// public void windowClosing(WindowEvent e) {
//
// }
//
// @Override
// public void windowClosed(WindowEvent e) {
//
// }
//
// @Override
// public void windowIconified(WindowEvent e) {
//
// }
//
// @Override
// public void windowDeiconified(WindowEvent e) {
//
// }
//
// @Override
// public void windowActivated(WindowEvent e) {
//
// }
//
// @Override
// public void windowDeactivated(WindowEvent e) {
//
// }
// });
//方法2:适配器模式:
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭的时候需要做的事情
@Override
public void windowActivated(WindowEvent e) {
//结束程序
System.exit(0);//括号里为e 的话是以异常的退出
}
});
}
}