图形用户界面(Graphics User Interface,GUI)
个人认为,所谓图形界面开发,不过是像小孩子玩积木一样,把一个个组件添加上去,组成一个作品。
首先,我们来了解一下这些组件,也就是搭积木的原材料。
Java提供的图形界面类有两大类:
1.AWT组件(基础)
AWT组件是jdk1.0的时候推出的图形界面类,这套组件是存储在java.awt包下的类。
(采用了C和C++的语言实现的,并且在实现的时候还调用了操作系统底层的绘图函数实现的组件,无法实现跨平台)
2.SWING组件(扩展)
SWING组件是jdk1.4的时候推出的图形界面类,这套组件是存储在javax.swing包下的类。
SWING是基于AWT组件的基础上,采用纯Java语言构建的一套新的跨平台组件。
不管使用的是AWT组件还是SWING组件开发的应用程序是可以跨平台的。
常用的组件类和辅助类
1.容器组件类:组件上能添加其他的组件,那该组件就是容器组件类。
JFrame 窗体容器组件类,顶级容器:要实现一个图形界面,首先必须要先有一个顶级容器做为载体。
JFrame类的常用方法
JFrame frame = new JFrame();
frame.setTitle("图形界面");// 设置窗体的标题
frame.setSize(300, 350);// 设置窗体的大小
frame.setLocation(0, 0);//设置窗体显示的位置
frame.setLocationRelativeTo(null);// 设置窗体相对于另一个组件的中央位置,如果参数为null,则在屏幕的中央,且一定要在设置大小后
frame.setDefaultCloseOperation(3);// 设置窗体的关闭操作;3表示关闭窗体退出程序;2表示如果只有一个窗体则关闭窗体退出程序,如果多个窗体则关闭当前窗体,其他的不退出;1表示关闭窗体但是程序不结束;0表示点击关闭按钮无效。
frame.setLayout(fl);//设置窗体的布局方式为fl流式布局
frame.add();//添加组件
frame.setResizable(false);// 禁止调整窗体的大小
frame.setVisible(true);// 设置窗体为可见
2.元素组件类:用来显示文字、图片或接收用户输入信息的就是元素组件类。
JLabel 标签元素组件类 显示文字或图片,也可以文字图片一起显示。
JLabel labelName = new JLabel("标签");
JTextField 文本输入框元素组件类 接收用户输入的信息,然后将输入的信息直接显示出来。
JPasswordField 密码输入框元素组件类 接收用户输入的信息,然后将输入的每一个字符用对应的一个符号代替显示。
JButton 按钮元素组件类 显示文字或图片,也可以文字图片一起显示,有按下和释放的效果。
使用方法: frame.add(元素组件对象);//(要在窗体可见之前完成)。
设置大小:setSize()方法只有顶级容器组件有效;
setPreferredSize()方法,除顶级容器组件外,其他组件设置大小的方法。
3.辅助类:帮助组件完成某一个特定功能的类。
javax.swing.ImageIcon 图标类 加载磁盘上的图片文件到内存中。
// 实例化ImageIcon对象,加载磁盘上的图片到内存中
ImageIcon icon = new ImageIcon("C:\\Users\\any\\Desktop\\53.png");
java.awt.FlowLayout 流式布局类 流式布局的布局效果类似于Word文档,但是不能像Word一样回车换行,只能是自动换行。
布局类是针对容器组件设置的;在java.awt和javax.swing包下,所有以Layout结尾的都是布局类。
java.awt.Dimension 封装组件宽度和高度的类
上述的组件类是属于SWING组件中的类,如果要使用记得加上它们的包名,
例如:javax.swing.JFrame,
也可以使用import javax.swing.JFrame引入类,然后直接使用类名。
如果想要使用AWT组件,只需要将类名的第一字母J去掉就可以,例如:java.awt.Frame。
登录界面示例:
package login;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import java.awt.FlowLayout;
import java.awt.Dimension;
public class Login {
public static void main(String[] args) {
Login mylogin=new Login();
mylogin.InitUI();
}
public void InitUI(){
//组件类
JFrame frame=new JFrame();
frame.setTitle("Login");
frame.setSize(300,330);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(3);
FlowLayout fl=new FlowLayout(FlowLayout.CENTER);
frame.setLayout(fl);
ImageIcon icon=new ImageIcon("C:\\Users\\lenovo\\Desktop\\179b2b02a0efd6cd.jpg");
JLabel lb=new JLabel(icon);
lb.setPreferredSize(new Dimension(300,150));
frame.add(lb);
JLabel labelName=new JLabel("账号:");
frame.add(labelName);
JTextField textName = new JTextField();
//文本框大小
textName.setPreferredSize(new Dimension(210,30));
frame.add(textName);
JLabel labelName2=new JLabel("密码:");
frame.add(labelName2);
JPasswordField textName2 = new JPasswordField();
//文本框大小
textName2.setPreferredSize(new Dimension(210,30));
frame.add(textName2);
JButton bt =new JButton("登录");
bt.setPreferredSize(new Dimension(70,50));
frame.add(bt);
frame.setVisible(true);
}
}
图形开发效果图
QQ:375471598
微信:Q159837547
欢迎过来勾搭小邱同学,或者对文章提出修改意见,共同成长。