在java中提供了两套图形界面类:AWT组件和SWING组件。
AWT组件jdk1.0的时候就推出的图形界面类,它是位于java.awt包下的类。当时在开发AWT组件时,采用C和C++的语言,并且还调用了操作系统底层的函数来实现AWT组件,也是因为实现语言和操作系统底层函数的调用导致了AWT组件无法实现跨平台性。
SWING组件是AWT组件的扩展,SWING组件是jdk1.4的时候推出的图形界面类,它是位于javax.swing包下的类。SWING组件是基于AWT组件的基础上,采用纯java语言实现的一条新的跨平台组件。
不管使用AWT组件还是SWING,我们开发的应用程序都是可以跨平台的。
首先我们来了解一下创建图形界面时常见的组件类和辅助类。
(1)容器组件类:容器上能添加其他的组件,那么该组件就是容器组件。如果要实现顶级容器,首先要有一个顶级容器。
JFrame 窗体容器组件类
(2)元素组件类:一般是用来显示文字,图片或者接收用户输入信息的就是元素组件。
JLabel 标签元素组件类: 显示文字或图片,也可以文字和图片一起显示;
JTextField 文本输入框元素组件类: 接收用户输入的信息,然后将输入的信息显示出来;
JPasswordField 密码输入框元素组件类: 接收用户输入的信息,然后将输入的信息显示出来;
JButton 按钮元素组件类: 显示文字或图片,也可以文字和图片一起显示,但是还有按下和释放的效果。
上述的容器组件类和元素组件类都是属于SWING组件中的类,在使用的时候要记得加上包名。例如:javax.swing.JFrame,或者使用import javax.swing.JFrame;如果想要使用AWT组件,只需将SWING组件中的类名去掉一个字母”J”,例如:java.awt.Frame,或者使用import java.awt.Frame。
(3)辅助类:帮助组件完成某一个特定功能的类
javax.swing.ImageIcon 图标类,加载磁盘上的图片文字到内存中;
java.awt.FlowLayout 流式布局类,布局效果类似于Word文档的布局效果,但是不能像Word一样用回车换行;
java.awt.Dimension 封装组件宽度和高度的类
下面介绍一下如何实现一个简单的登录界面。
(1)首先定义一个Login,在类中定义程序的入口主函数和初始化界面的方法;
(2)在主函数中,实例化Login类的对象,然后用对象名调用初始化界面的方法;
(3)在初始化界面的方法中,实例化JFrame窗体容器组件类的对象;
(4)设置窗体对象的属性值:标题、大小、显示位置、关闭操作、布局、可见、…;
(5)实例化元素组件类的对象,然后将组件对象添加到窗体上(组件添加要在窗体可见之前)。
//**导入所需的包**
package hello;
import javax.swing.JFrame;
import java.awt.FlowLayout;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
@SuppressWarnings("unused")
public class Login {
public static void main(String[]args) {
Login login=new Login();//*在主函数中,实例化Login类的对象,然后用对象名调用初始化界面的方法*
login.initUI();
}
public void initUI() {
JFrame frame=new JFrame();
frame.setTitle("Login");
frame.setSize(500,500);
frame.setLocation(250, 300);
FlowLayout f1=new FlowLayout(FlowLayout.CENTER);
frame.setLayout(f1);
frame.setDefaultCloseOperation(3);
ImageIcon icon = new ImageIcon("C:\\Users\\Mypc\\Pictures\\Saved Pictures\\mmexport1527082718882.jpg");
JLabel labelIcon = new JLabel(icon);
frame.add(labelIcon);
JLabel labelName = new JLabel("账号:");
frame.add(labelName);
JTextField textName = new JTextField();
textName.setPreferredSize(new Dimension(410, 30));
frame.add(textName);
JLabel labelname=new JLabel("密码:");
frame.add(labelname);
JTextField textname1=new JTextField();
textname1.setPreferredSize(new Dimension(410,30));
frame.add(textname1);
JButton buttonname=new JButton("登录");
frame.add(buttonname);
JButton buttonname1=new JButton("取消");
frame.add(buttonname1);
frame.setVisible(true);//*设置登录界面可见*
}
}
根据上面的方法,一个简单的图形界面就做好了:
在java中,很多包的功能已经提前写好,我们只需要查阅资料调用我们需要的包来实现相关的功能~