51图像用户界面
使用方式:借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便的发送指令,并将运行结果以图形的方式展现给用户
通过抽象窗口工具包(AWT)来创建图形用户界面(GUI)
AWT包主要提供了三大类:
容器类
Ui组件类
帮助类
Jdk1.2以后引入新包swing,在AWT的基础上增加了很多功能
UI组件
Java的图形用户界面最基本的组成部分是组件,且组件不能单独显示出来,必须放在单独的容器中才可以显示出来
在componen类中定义了AWT组件具有一般功能如:大小,位置控制,外形控制,组件的状态控制等
AWT支持的组件:按钮、标签、文本框、文本去、复选框、单选按钮、滚动条、表格、菜单等……
容器:具有的功能是组件管理和布局管理,组件管理中一般包含的方法:add(),remove(),getcomponent
Container类可以直接或间接的派生两个常用的容器---框架frame类,面板panel类
帮助类
Graphics类,布局管理类(为容器设置此类时可调用容器类中的setlayout()方法),Color类和Font类
容器类组件:分为顶层容器(可以独立的窗口,重要的子类是Frame和Dialog)和非顶层容器(必须位于窗口之内,包括Panle和scrollPane等,Panle的重要子类是Applet类)
开发GUI
第一步:导包
第二步:创建组建的对象
第三步:初始化
创建窗口:方法一:继承。
import java.awt.;
import javax.swing.;
public class Java extends JFrame {
public Java() {
this.setTitle("窗口");
this.setSize(500,500);
this.setLocation(400,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public class Test {
public static void main(String[] args) {
new Java();
}
}
}
方法二:创建子类
public void test() {
JFrame frame=new JFrame();
frame.setTitle("窗口");
frame.setSize(500,500);
frame.setLocation(400,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lable标签
label.fontcolor, label.font, label.fontsize,label.foreground,label.sethorizontalAlignment()—对齐方式……
按钮 button
private JButton button;
button=new JButton("按钮");
button.setEnabled(false);
布局管理器 layout manager
常用布局:
Flowlayout(流式布局):
Flowlayout():生成一个默认的流式布局
Flowlayout(int alignment):可以设定每一行组件的对齐方式
Flowlayout(int alignment, int horz, int vert): 可以设定组件间的水平和垂直距离
多个按钮:private JButton btn[]=new JButton[10];
for(int i=0;i
btn[i]=new JButton("按钮"+i);
for(int i=0;i
this.add(btn[i]);
Borderlayout(边界布局):
Borderlayout();生成默认的编辑布局
Borderlayout(int horz, int vert): 可以设定组件间的水平和垂直距离
setLayout(new BorderLayout());
add(btn[0],BorderLayout.EAST);
add(btn[1],BorderLayout.WEST);
add(btn[2],BorderLayout.NORTH);
add(btn[3],BorderLayout.SOUTH);
add(btn[5],BorderLayout.CENTER);
Gridlayout (网格布局):
Gridlayout()生成一个单列的网格布局
Gridlayout(int row,int col)生成一个有行数列数的网格布局
setLayout(new GridLayout(4,4,5,5));
for(int i=0;i
this.add(btn[i]);
}
Card Layout(卡片布局)
Boxlayout(框布局〉
GridBagLayout(网格包布局)
空布局:给容器添加组件的时候,组件没有大小,没有位置;需要自行创建大小,并且定位位置(setBounds()--既可以设置大小也可以设置位置)
每个容器( Container对象)都有一个与它相关的缺省的布局管理器。
Appt的缺省布局是 Flowlayout, Frame的缺省布局是 Borderlayout,Panel的缺省布局是
Flowlayout。
文本框 TextField
QQ登录页面代码:
import java.awt.;
import javax.swing.;
public class Login extends JFrame{
private JLabel lname;
private JLabel lpass;
private JTextField tname;
private JTextField tpass;
private JButton login;
private void init() {
lname=new JLabel("用户名");
lpass=new JLabel("密 码");
tname=new JTextField(14);
tpass=new JTextField(14);
login=new JButton("登录");
this.setLayout(new FlowLayout(FlowLayout.CENTER));
this.add(lname);
this.add(tname);
this.add(lpass);
this.add(tpass);
this.add(login);
this.setResizable(false);
this.setTitle("QQ登录");
this.setSize(250,150);
this.setLocation(400,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Login() {
init();
}
}
public class Test {
public static void main(String[] args) {
new Login();
}
}