1. GUI概念:GUI全称Graphical User Interfaces,意为图形用户户界面,又称为图形用户接口,GUI指的就是采用图形方式显示的计算机操作用户界面,当我们点击PC端微信图标时会弹出一个微信登陆界面的对话框。这个图标就可以被称作图形化的用户界面。
Java主要提供了两个包来做GUI编程:Awt包和Swing包;
-
awt包:主要提供字体和页面布局以及事件处理,主要是Container容器 和 Component组件。
-
Swing包:主要提供各种组件,类似于按钮,文本框…
但是GUI并不是Java语言擅长的东西界面做的不是特别好看,而且程序运行需要在JRE上,可能做了一个几兆的贪吃蛇游戏需要下一个一百多兆的运行环境相信没几个人会这样干吧。现在做GUI的大部分都用QT或者C#。
2. 初识GUI
- 我的第一个非黑窗界面,学习Frame类。Frame是窗体类,页面中所有的组件和布局都会包括在这个窗口里,Frame类中主要有下面几个常用的方法。
-
get/setTitle方法:主要用来获取/设置窗口的标题。
-
setResizable(boolean resizable) :传入为true时,这个窗口是可以任意拉伸的。
-
setBackground(Color bgColor) :设置背景颜色,new一个Color类时传入RGB三色值即可。
-
setVisible(boolean flag):设置窗口的可见性,值为true时窗口创建出来就会展示出来。
-
setsize(int w,int h):设置窗口的宽高。
-
setLocation():设置窗口的位置显示器的(0,0)点在左上角,传入的参数是相对左上角的。
-
setBounds(int x,int y,int w,int h):setLocation + setSize方法的结合体。
有了上面的这些方法初步了解就可以写出第一个GUI界面了,编写自己的类继承Frame类构造出五个窗口,但是这些窗口只能缩放不能关闭因为没写监听事件。
import java.awt.*;
class TestFrame extends Frame{
static int id = 0;
public TestFrame(int x,int y,int w,int h,Color color) {
super("MyFrame"+(++id)); //窗口名字
setBounds(x,y,w,h); //设置左上角的坐标位置,以及窗口大小
setVisible(true); //将窗口可见性打开
setBackground(color); //设置窗口的背景颜色
setResizable(true); //窗口可以任意改变大小
setLocation();
}
}
public class MyFrame {
public static void main(String[] args) {
for(int i = 1;i <= 5;i++){
Color color = new Color(78, 158, 243);
new TestFrame(i*100,i*100,400,400,color);
}
}
}
- Panel面板
Panel面板和Frame窗体都是属于awt包下的,面板必须是建立在窗口内的属于组件,一个Frame窗体内可以加任意个Panel面板。一般所有的组件之类的东西都不会直接写在窗口内,而是写在面板上,面板又建立在窗口上。
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class PanelTest {
public static void main(String[] args) {
Frame f = new Frame("包含Panel面板的窗体");
f.setBackground(new Color(71, 149, 232));
f.setBounds(200,200,400,400);
f.setResizable(true); //窗口设置为可见
f.setLayout(null); //设置布局
f.setVisible(true); //设置可见性
Panel p = new Panel();
p.setBackground(Color.PINK);
p.setBounds(50,50,200,200);
f.add(p); //将面板加入到Frame窗体中
//适配器模式:需要什么方法就写什么
f.addWindowListener(new WindowAdapter() { //窗口监听事件
@Override
public void windowClosing(WindowEvent e) {
//当鼠标点击关闭时程序结束
System.exit(0);
}
});
}
}