JAVA GUI
程序员文章站
2024-01-27 08:14:52
...
一、GUI(图形用户接口)
- 用图形的方式来显示计算机操作界面,更方便直观
- java.awt(抽象窗口工具包),需要调用本地系统方法实现功能,属于重量级控件
- javax.swing在AWT的基础上,建立的一套图形界面系统,其中提高了更多的组件,完全由java实现,增强了移植性,属于轻量级控件
- Frame类方法都在下面的实例中进行演示
- 事件监听机制
a) 事件源:事件发生的地方
b) 事件:要发生的事件
c) 事件处理:针对发生的事情做出处理方案
d) 事件监听:将事件源和事件关联起来 - 适配器设计模式
a) 问题:当接口方法比较多,但是实现类仅使用一个方法,这时也需要将其他方法一并实现
(可以空实现),比较麻烦
b) 解决此问题:在接口类和实现类中间加一个适配器类(适配器类为抽象类,仅仅空实现接口),
实现类(继承适配器类,用哪个就重写哪个适配器类的方法)
适配器类如:WindowAdapter - 窗体布局:窗体中各个组件的排列方式
a) 流式布局FlowLayout:从左到右,从上到下
b) 边界布局BorderLayout:将容器分为东、西、南、北、中五个区域,每个区域只能包含一个组件,
并通过相应常量进行表示
c) 网格布局GridLayout:以矩形网格的形式对容器进行布置,容器被分成大小相等的矩形,
一个矩形中放置一个组件
d) 网格包布局GridBagLayout:不要求组件的大小相同便可以将组件垂直、水平或沿基线对齐。
e) 卡片布局CardLayout:将容器组件看成一张卡片,一次只能看到一张卡片,容器充当卡片堆栈。 - 菜单组件
a) MenuBar:菜单条
b) Menu:菜单
c) MenuItem:菜单项,
d) 先创建菜单条,再创建菜单,每一个菜单中建立菜单项,也可以将菜单添加到菜单中,作为子菜单
e) 通过setMenuBar()方法,将菜单添加到Frame中
二、程序实例
1. 窗体基本设置实例(包含Frame类常用方法)
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class FrameDemo {
public static void main(String[] args) {
//创建窗体对象
Frame f=new Frame();
//创建窗体对象,并设置窗体标题为zfliu,和f.setTitle("zfliu96");方法功能相同
//Frame f=new Frame("zfliu");
//设置窗体大小
f.setSize(800, 400);
//设置窗体位置
f.setLocation(200,300);
//可以直接设置窗体的位置和大小
//f.setBounds(200, 300, 800, 400);
//设置窗体名字
f.setTitle("zfliu96");
//设置窗体是否可见,先设置好窗体的属性再将其显示出来
f.setVisible(true);
//关闭窗体
//事件源:f
//事件:对窗体进行处理
//事件处理:关闭窗口(System.exit(0));需要实现WindowListener接口,并重写关闭窗口的方法
//事件监听
//使用适配器模式,只需要重写需要用的方法即可,WindowAdapter适配器类
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
}
}
2. 添加并设置按钮功能实例
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*
- 添加并设置按钮功能实例(按钮的功能:实现文本框内的数据向文本域转移)
- 1、创建窗体对象
- 2、创建按钮对象,并设置按钮功能
- 3、将按钮添加到窗体中
- 4、窗体显示
- 5、窗体关闭功能
*/
public class ButtonDemo {
public static void main(String[] args) {
Frame f=new Frame("数据转移");
//设置分本框
TextField tf=new TextField(20);
//设置文本域
TextArea ta=new TextArea(10,40);
f.setBounds(400, 300, 400, 300);
Button b=new Button("Button1");
//设置按钮功能
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//获取文本框的内容,并去除字符串前面和后面的空格
String s=tf.getText().trim();
//将字符串内容设置到文本域中
//ta.setText(s);
//追加内容,并换行
ta.append(s+"\n");
//复制结束后可以清楚文本框的内容
tf.setText(null);
//获取光标,使光标一直在文本框内
tf.requestFocus();
}
});
//将按钮添加到窗体中
f.add(tf);
f.add(b);
f.add(ta);
//设置窗体布局模式为流式布局
f.setLayout(new FlowLayout());
//关闭窗口
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.setVisible(true);
}
}
上一篇: RN 获取数据的过程