图形和界面
2018.6.1
1.java提供的图形界面类
(1).AWT组件
AWT组件jdk1.0的时候推出的图形界面类;它是位于java.awt包下的类。
AWT组件是在实现的时候采用的是C和C++的语言实现的,并且还调用了操作系统底层的绘图函数来实现AWT组件的。
C和C++编写的代码是否能够跨平台运行?不能
不同操作系统底层的函数是否完全一致?不同
基于上述的两个原因,就导致AWT组件无法实现跨平台特性。
(2).SWING组件
SWING组件jdk1.4的时候推出的图形界面类;它是位于javax.swing包下的类。
SWING组件是基于AWT组件的基础上,采用纯java语言构建的一条新的轻量级跨平台组件。
不管使用的AWT组件还是SWING组件,我们开发的应用程序是可以跨平台的。
2.常用的组件类和辅助类
(1).容器组件类:组件上能添加其他的组件(容器组件、元素组件),那该组件就是容器组件。
JFrame 窗体容器组件类 顶级容器组件,如果要实现图形界面,首先必须要先有顶级容器。
顶级容器组件不要相互添加
(2).元素组件类:一般是用来显示文字、图片、接收用户输入信息的组件就是元素组件。
JLabel 标签元素组件类 显示文字或图片,文件图片一起显示;
JTextField 文本输入框元素组件类 接收用户输入的信息,然后在一行显示出来;
JTextArea 文本域元素组件类 接收用户输入的信息,然后可以多行显示;
JPasswordField 密码输入框元素组件类 接收用户输入的信息,然后以某一个符号代替输入的内容显示;
JButton 按钮元素组件类 显示文字或图片,文件图片一起显示,还可以点击;
上述的容器组件类和元素组件类都是属于SWING组件中的类,如果要使用记得加上包名,例如:javax.swing.JFrame。
如果要使用AWT的组件,只需要类名少一个字母"J",然后加上awt的包名,例如:java.awt.Frame。
3.辅助类:帮助组件完成某一个特定功能的类。
java.awt.FlowLayout 流式布局类,布局类是针对容器组件的,流式布局的布局效果类似于Word文档,但是不能像Word一样回车换行。
javax.swing.ImageIcon 图标类,加载磁盘上的图片到内存中,然后组件好使用。
java.awt.Dimension 封装组件宽度和高度的类,通俗的讲就是修改组建的宽度和高度属性,比如我现在需要修改文本框的宽度和高度,那么只需: textName.setPreferredSize(new java.awt.Dimension(400,20));textName为你的文本输入对象(JTextField),setPreferredSize()为修改组件大小的方法,由Dimension携带两个参数传入。
3.登录界面实现
1.定义Login类,在类中定义主函数和初始化界面的方法。
2.在主函数中,实例化Login类的对象,然后用初始化界面的方法。
3.在初始化界面的方法中,实例化JFrame窗体容器组件类的对象。
4.设置窗体容器组件的属性:标题、大小、显示位置、关闭操作、布局、可见、......
5.实例化组件类的对象,然后将组件对象添加到窗体上。
源码如下:
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
/**
* 1.定义Login类,
*
* @author Lzh
*
*/
public class Login {
/**
* 1.在类中定义主函数和
*/
public static void main(String[] args) {
// 2.在主函数中,实例化Login类的对象,然后用初始化界面的方法。
Login l = new Login();
l.initUI();
}
/**
* 1.初始化界面的方法;
*/
public void initUI() {
// 3.在初始化界面的方法中,实例化JFrame窗体容器组件类的对象。
JFrame frame = new JFrame();
// 4.设置窗体容器组件的属性:标题、大小、显示位置、关闭操作、布局、可见、......
frame.setTitle("Login");
frame.setSize(300, 400);
frame.setDefaultCloseOperation(3);
frame.setLocationRelativeTo(null);
FlowLayout fl = new FlowLayout(FlowLayout.CENTER);//设置组件对齐方式为居中(默认的),当然还有LEFT和RIGHT
frame.setLayout(fl);
// 实例化
ImageIcon icon = new ImageIcon("C:/Users/熊向军/Desktop/2408.png");
// 实例化JLabel标签对象
JLabel labelIcon = new JLabel(icon);
frame.add(labelIcon);
JTextField textName = new JTextField();
//setSize这个方法只对顶级容器有效,如果要设置其他组件的大小,记得使用setPreferredSize()
textName.setPreferredSize(new Dimension(400,20));
frame.add(textName);
frame.setVisible(true);
}
}
运行以上的代码即可得到一个简单的登陆界面。
2333有点丑。刚入门别介意。简单说一下流式布局函数,你把它想象成word的换行那样,先把组建在一行放满,然后自动转入下一行。这个函数可以设置组件对齐的方式和以及组件间的左右和上下距离。格式为:FlowLayout fl = new FlowLayout(FlowLayout.CENTER,int,int);后面的int即为上下和左右的距离,如果想了解详细的内容,可以参考1.6版本的JDK API 里面详细介绍了各个类。
补个图:
1.登录界面
2.计算器界面
计算器界面无非就是多了很多按钮,把按钮的大小设置好以及对齐方式就可以让按钮的排版变得非常好看。如果要制作成像电脑自带的那种排版效果,可以将按钮放在指定的x,y位置。具体函数是setBounds(int x,int y,int width,int height)。详细代码如下:
JButton jb=new JButton();
jb.setBounds(30,30,50,20);
加油!