黑马程序员--java GUI
来源:互联网 发布:工作软件 编辑:程序博客网 时间:2024/05/20 01:39
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
用户图形界面GUI
知识点
一、用户图形界面GUI
二、Java对GUI的支持
三、GUI体系
四、布局管理器:
五、事件监听机制
六、适配器模式Adapter
七、案例:
---------------------------------------------------------------------------------
一、用户图形界面GUI
Graphical User Interface图形用户接口:
用图形的方式,来显示计算机操作的界面,这样更方便更直观。
二、Java对GUI的支持
1、java.awt:Abstract Window ToolKit (抽象窗口工具包),
需要调用本地系统方法实现功能,跟系统关联性较强,属于重量级控件。
2、javax.swing:在AWT的基础上,建立的一套图形界面系统,提供更多的组件,
完全由Java实现。跟系统关联性较弱,增强了移植性,属轻量级控件。
三、GUI体系
图片
1、Component组件:
其实就是指对一些功能和属性进行封装的对象。简单的说,组件就是对象。
组件分为两大类:
(1)容器组件:就是可以存储容器组件和基本组件的组件
(2)基本组件:就是可以直接显示在容器上的组件
2、Container容器:
是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。
四、布局管理器:
容器中的组件的排放方式,就是布局。常见的布局管理器:
(1)FlowLayout(流式布局管理器):它是Panel默认的布局管理器。
( 从左到右,从上到下;它是Panel默认的布局管理器。)
(2)BorderLayout(边界布局管理器):它是Frame默认的布局管理器。
(东,南,西,北,中;它是Frame默认的布局管理器)
(3)GridLayout(网格布局管理器):规则的矩阵
(4)GridBagLayout(网格包布局管理器):不规则的矩阵
(5)CardLayout(卡片布局管理器):选项卡
五、事件监听机制
事件监听机制流程图:
图片
(1)事件源:发生事件的组件
(2)事件(Event):可能发生的事情
(3)事件监听(Listener):对可能发生的事情的多个情况的封装对象。一般是个接口。
(4)事件处理:针对发生的事情的处理方式
六、适配器模式Adapter
1、适配器的作用:
将接口中的方法,适配成用户最终想要的方法。如果接口中的方法较多,而有可能只用其中的一个时,就可以在接口和具体的类之间插入一个适配器类,做一次转换即可。而适配器类实现接口,把所有方法全部空实现,具体的类继承适配器类,用哪个方法,就重写哪个。
2、用法:
(1)格式:
// 事件源,添加监听机制,继承适配器
事件源.addXXXLintener(new XXXAdapter(){
//处理事件的方式
public void mouseClikced(XXXEvent e){ }
})
(2)代码体现(窗体添加监听机制,通过适配器实现关闭功能):
new Frame().addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0); }
});
注意:不是每一个事件接口都有对应的适配器类,如果接口中的方法少于三个就不需要。
七、案例:
1、第一个窗体案例,创建图形化界面:
(1)创建frame窗体。
(2)设置窗体的属性。
(3)让窗体显示,通过setVisible(true)
图片
代码体现:
//(1)创建一个最初不可见的窗体对象
Frame f = new Frame();
//(2)设置窗体的属性。
// 设置标题
f.setTitle("Hello,GUI");
// 设置的坐标
f.setLocation(400, 200);
// 设置大小
f.setSize(400, 300);
// (3)设置窗体可见
f.setVisible(true);
注意:用setBounds()方法,可以同时设置窗体的坐标和尺寸
public void setBounds(int x,int y,int width,int height)
2、对窗体案例进行关闭(增加监听机制)
代码体现:
// 创建窗体对象,并让窗体可见
Frame f = new Frame();
f.setVisible(true);
// 设置窗体属性
f.setTitle("关闭窗口");
f.setBounds(400,200, 400,300)
// 找监听,用适配器类改进:只需重写需要的方法(共7种)
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0); }
});
3、在窗体添加按钮,并对按钮添加事件
图片
需求: 在窗体上添加一个按钮。并对按钮添加一个事件,
实现点击按钮,就在控制台输出一句话:201314
步骤:(1)创建窗体对象
(2)创建按钮对象
(3)把按钮添加到窗体上
(4)把窗体显示出来
注意:A若要改变按键位置,需要重新设置窗体布局setLayout方法;
B若要设置按钮尺寸,需把布局设成setLayout(null)
代码体现:
// 创建窗体对象
Frame f = new Frame();
// 设置属性
f.setTitle("添加按钮");
f.setBounds(400,200, 400,300);
// 重新设置窗体布局
f.setLayout(new FlowLayout());
// 创建按钮对象
Button bu = new Button("我是按钮,点一下");
// bu.setSize(30, 20);
// 把按钮添加到窗体上
f.add(bu);
// 添加窗体关闭事件
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0); }
});
//对按钮添加事件,作输出
bu.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("201314"); }
});
// 把窗体显示出来; 设置可见
f.setVisible(true);
4、在窗体上添加文本框和文本域
图片
需求:把文本框的内容转到文本域中
代码体现:
// 创建窗体对象
Frame f = new Frame();
// 设置窗体属性
f.setTitle("文本组件");
f.setBouds(400, 200, 400, 300);
f.setLayout(new FlowLayout());
// 创建文本框,按钮,文本域对象
// TextField(int columns)
final TextField tf = new TextField(20);
Button bu = new Button("转到");
final TextArea ta = new TextArea(12, 40);
// 把文本框,按钮,文本域对象添加到窗体对象上
f.add(tf); f.add(bu); f.add(ta);
//添加窗体事件
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0); }
});
//添加按钮事件
bu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取文本框的值
String text= tf.getText();
// 清空操作
tf.setText("");
// 文本域追加数据
ta.append(text + "\r\n"); }
});
// 显示窗体
f.setVisible(true);
5、多级菜单案例
需求:1个窗体,1个菜单栏,栏上有菜单"文件","文件"含"打开记事本"和"退出系统"菜单项,
和 "更换标题"菜单, "更换标题" 包含 "好好学习,恢复标题" 2个菜单项 图片
//创建并设置窗体
final Frame f = new Frame();
f.setTitle("多级菜单");
f.setBounds(300, 200, 400, 300);
final String name = f.getTitle();
//创建菜单栏,菜单和菜单项
MenuBar mb = new MenuBar();
Menu m1 = new Menu("文件");
Menu m2 = new Menu("更改标题 ");
final MenuItem mi1 = new MenuItem("好好学习");
MenuItem mi2 = new MenuItem("恢复标题");
MenuItem mi3 = new MenuItem("打开记事本");
MenuItem mi4 = new MenuItem("退出系统");
//窗体添加菜单栏,菜单栏添加菜单,菜单添加菜单项
m2.add(mi1);
m2.add(mi2);
m1.add(m2);
m1.add(mi3);
m1.add(mi4);
mb.add(m1); //菜单栏添加菜单
f.setMenuBar(mb); //窗体添加菜单栏
//为窗体按钮和菜单项,添加关闭事件
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0); }
});
mi4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0); }
});
//添加打开记事本事件
mi3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 打开系统的记事本
Runtime r = Runtime.getRuntime();
try { r.exec("notepad"); }
catch (IOException e1)
{ e1.printStackTrace(); } }
});
//添加更改标题事件
mi1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
f.setTitle(mi1.getLabel()); }
});
//添加恢复标题事件
mi2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
f.setTitle(name); }
});
f.setVisible(true);
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
- 黑马程序员 Java GUI
- 黑马程序员---GUI【java】
- 黑马程序员--java GUI
- 黑马程序员--JAVA<GUI>
- 黑马程序员—Java GUI
- 黑马程序员-java基础 GUI
- 黑马程序员-->Java基础-->GUI
- 黑马程序员--java基础--GUI
- 黑马程序员----java GUI详解
- 黑马程序员 JAVA基础--GUI
- 黑马程序员---java基础--GUI
- 黑马程序员-----Java基础-----GUI
- 黑马程序员-Java基础:GUI
- 黑马程序员--java学习之GUI
- 黑马程序员---Java基础--22天(GUI)
- 黑马程序员——java图形界面GUI
- 黑马程序员——java中的 GUI
- 黑马程序员---java基础之GUI
- 判断一条边能不能在最小割集里
- Python中文编码过程中遇到的一些问题
- php static 静态关键字
- weblogic管理5——了解weblogic程序发布
- 宏定义展开问题
- 黑马程序员--java GUI
- MYSQL-master-slave实践
- 浇浇乜浇浇1
- 浇浇乜浇浇2
- 清除html表格默认外边距
- 浇浇乜浇浇3
- Atomic Variables 原子变量
- 浇浇乜浇浇4
- dos下批量删除.svn文件夹