GUI编程
组成:
-
窗口
-
弹窗
-
面板
-
文本框
-
列表框
-
监听事件
-
鼠标键盘事件
-
写破解工具
1、简介
GUI的核心技术:swing、AWT
GUI目前几乎被淘汰,其中原因主要是:
-
界面太不美观。
-
需要下载比较大的jre环境。
GUI学习下来的作用:
- 可以写出一些自己想要的小工具。
- 工作的时候,可能需要维护swing界面。
- 了解MVC架构,了解监听器。
2、AWT
2.1、AWT介绍
-
awt包含很多类和接口!GUI:图形界面编程!
-
元素:窗口,按钮,文本框等等
-
Java.awt
2.2、组件和容器
1.Frame
package GUI;
import java.awt.*;
public class TestFrame {
public static void main(String[] args) {
//frame, 通过源码得到frame里的方法,来改变窗口的设置。
Frame frame = new Frame("java图形界面窗口");
//设置可见性
frame.setVisible(true);
//设置窗口大小 w h
frame.setSize(400,400);
//设置背景颜色 color
frame.setBackground(new Color(34, 141, 196));
//弹出的初始位置
frame.setLocation(100,100);
//设置大小固定
frame.setResizable(false );
}
}
利用封装显示多个窗口:
public class TestFrame1 {
public static void main(String[] args) {
//显示多个窗口 new出来
MyFrame myFrame1 = new MyFrame(100,100,300,300,Color.black);
MyFrame myFrame2 = new MyFrame(400,100,300,300,Color.blue);
MyFrame myFrame3 = new MyFrame(100,400,300,300,Color.white);
MyFrame myFrame4 = new MyFrame(400,400,300,300,Color.green);
}
}
class MyFrame extends Frame{
static int id = 0;//存在多个窗口,需要计数器
public MyFrame(int x,int y,int w,int h,Color color){
super("MyFrame+"+(++id));
setVisible(true);
setBounds(x,y,w,h);
setBackground(color);
}
}
2.面板 Panel
面板无法单独显示必须添加到某个容器中!
面板实例,通过监听事件实现窗口关闭:
package GUI;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
//面板是在窗口里面 布局的概念
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
frame.setBounds(300,300,400,400);
frame.setBackground(new Color(35, 140, 172));
panel.setBounds(50,50,300,300);
panel.setBackground(new Color(215, 22, 22));
//frame.add(panel)窗口里创建面板
frame.add(panel);
frame.setVisible(true);
//监听事件,监听窗口的关闭事件 实现窗口关闭
//简化代码 ,用适配器模式
frame.addWindowListener(new WindowAdapter() {
//点击关闭窗口的时候要做什么
@Override
public void windowClosing(WindowEvent e) {
//结束程序
System.exit(0);
}
});
}
}
3.布局管理器
- 流式布局 FlowLayout (组件从左到右依次排列,到尾部在另起一行同上排列。) Panel系(Panel、Applet)默认FlowLayout
public class TestFlowLayout {
public static void main(String[] args) {
Frame frame = new Frame("FlowLayout");
//按钮组件
Button button1 = new Button("button1");
Button button2 = new Button("button2");
Button button3 = new Button("button3");
//设置流式布局
frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
frame.setSize(400,400);
//添加按钮
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setVisible(true);
}
}
- 方位排列布局 BorderLayout (将容器分为EAST,SOUTH,WEST,NORTH,CENTER五个区域,把组件填到这些区域) Window系(Frame、Dialog)默认BorderLayout
public class TestBorderLayout {
public static void main(String[] args) {
Frame frame = new Frame("BorderLayout");
//按钮组件
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(300,300);
frame.setVisible(true);
}
}
- 表格布局 GridLayout (容器分割成大小相同的网格,我们在添加组件时将默认从左到右从上到下,将组件依次添加到每个网格中,而每个组件的大小也就由其所添加到的网格的大小所决定)
public class TestGridLayout {
public static void main(String[] args) {
Frame frame = new Frame("GridLayout");
//按钮组件
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");
Button button6 = new Button("button6");
//设置表格布局
frame.setLayout(new GridLayout(2,3));
frame.setSize(400,400);
//添加按钮
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.add(button5);
frame.add(button6);
//自动设置布局大小优化 pack()
frame.pack();
frame.setVisible(true);
}
}
- 单独使用一个布局不太美观,可以利用布局嵌套来实现,界面的美化。
版权声明:本文为qq_44104879原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。