黑马程序员——Java基础---图形化界面
2015-04-11 14:38
225 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
第一部分 图形化界面基本概述
一.人机交互的两种方式
1.GUI
1)Graphical User Interface(图形用户接口)
图形化界面:用图形的方式来显示计算机操作的界面,这样更方便直观,使用者易于 接受,容易上手操作。
2.CLI
1)Command line User Interface(命令行用户接口)
命令行方式:需要有一个控制台,输入特定的 指令,让计算机完成一些操作。较为麻烦,需 要记录住一些命令。就是常见的Dos命令行操作。
2)dos命令行,课程中常见的命令。
dir : 列出当前目录下的文件以及文件夹
md : 创建目录
rd : 删除目录
cd : 进入指定目录
cd.. : 退回到上一级目录
cd/ : 退回到根目录
del : 删除文件
exit : 推出dos命令行
二.图形化界面工具
1.Java.Awt包
1)java.Awt:Abstract Window ToolKit(抽象窗口工具包)
需要调用本地系统方法实现功能。属于重量级控件。
2)特点
跨平坦性弱,更依赖于平台(跨平台后,个别属性有变化)。
2.Java.Swing包
1)Java.Swing
在AWT的基础上,建立的一套图形化界面系统,其中提供了更多的组件,而且完全由java实现。增强了移植性,属轻量级控件。
2)特点
不依赖平台,功能更强。
三.常用的体系继承。
Component(组件)---|Button(按钮)
---|Label(标签)(封装文字)
---|Checkbox(复选框)
---|TextComponet(文本组件)---|TextArea(文本区域)
---|TextField(文本框)
---|Container(容器) --------------|Panel(面板)
---|Window(窗口) ---|Frame(框架)
---|Dialog(对话框)---|FileDialog(文件对话框)
Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。
四.布局管理器
1.概念:容器中的组件的排放方式,就是布局
2.常见的布局管理器:
1)FlowLayout(流式布局管理器)
从左到右的顺序排列。
Panel默认的布局管理器
2)BorderLayout(边界布局管理器)
东,南,西,北,中(默认居中,填充,添加新组建覆盖)
Frame默认的布局管理器。
3)GridLayout(网格布局管理器)
规则的矩阵(例如:计算器)
4)GardLayout(卡片布局管理器)
选项卡
5)GridBagLayout(网格包布局管理器)
非规则的矩阵(占用多个格子)
最方便的布局是坐标式布局(C语言)。
五.创建图形化界面。
1.创建frame窗体
Frame f=new Frame("my Awt");
创建一个标题为”my Awt”的窗口框架对象
2.对窗体进行基本设置(比如:大小位置布局)
f.setSize(500,400);
将组件移到新位置,继承Component方法
3.定义组建
Button b=new Button("按钮");
定义一个名称为”按钮”的按钮
4.将组件通过窗体的add方法添加到窗体中
f.setLayout(new FlowLayout());
添加按钮到窗口框架,默认为边界布局。继承Container方法
5.让窗体显示
setVisible(true)
六.事件监听机制
1.事件源。
就是awt包或者swing包中的那些图形界面组件。
界面上虚线框在哪,哪就是当前事件源。
2.事件。
每一个事件源都有自己特有的对应事件和共性事件。
3.监听器。
将可以触发每一个事件的动作(不止一个动作),都已经封装到监听器中。
适配器:接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。
监听器方法超过三个的都配有适配器。
例如:WindowAdapter。
4.事件处理。
引发事件后处理方式
5.事件监听机制流程图
6.常见事件的分类
1)窗口事件
对框架窗口操作的事件
AddWindowListener: 添加指定的窗口侦听器,以从此窗口接收窗口事件。
2)Action事件(没有适配器)
对按钮操作的事件。也可以叫活动监听。键盘鼠标都可以操作。
AddActionListener:添加指定动作的侦听器,以接收发自指定按键的动作事件。
3)鼠标事件
鼠标动作产生的事件。属于Component组件中。
AddMouseListener:添加指定的鼠标侦听器,以接收发自此组件的鼠标事件。
双击事件:判断e.getClickCount()次数。
4)键盘事件
键盘动作产生的事件。属于Component组件中。
AddKeyListener:添加指定的按键侦听器,以接收发自此组件的按键事件。
Esc退出:判断e.getKeyCode()==KeyEvent.VK_ESCAPE
组合键:判断e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER
consume:键入有效的值。也就是屏蔽键。
第二部分 组件应用
一.对话框Dialog
1.概念:Dialog 是一个带标题和边界的顶层窗口。
2.建立对象
Dialog d=new Dialog(Dialog owner, String title, boolean modal)
owner:依赖窗口;title:标题;modal:模式(定义窗口弹出后其他窗体是否可以操作)
d.add(Label):添加时间描述信息。
二.菜单
1.Menu
对象是从菜单栏部署的下拉式菜单组件。
2.MenuBar
绑定到框架的菜单栏的平台
3.MenuItem
默认的 MenuItem 对象包含一个简单的加标签的菜单项
包含关系:菜单栏里添加菜单,菜单里可以添加菜单项,菜单里可以添加菜单。
三.文本区域
1.TextArea对象是显示文本的多行区域。可以将它设置为允许编辑或只读。
2.构造函数TextArea(int rows,int columns)
构造一个新文本区,该文本区具有指定的行数和列数,并将空字符串作为文本。
3.append(String str): 将给定文本追加到文本区的当前文本。
四.jar包制作
1.将多个类封装到了一个包(package)中。
2.定义一个jar包的配置信息。
定义一个文件a.txt 。文件内容内容为:
Main-Class:(空格)包名.类名(回车)
3.打jar包。
jar -cvfm my.jar a.txt 包名
4.通过winrar程序进行验证,查看该jar的配置文件中是否有自定义的配置信息。
5.通过工具--文件夹选项--文件类型--jar类型文件,通过高级,定义该jar类型文件的打开动作的关联程序。
jdk\bin\javaw.exe -jarjar -cvf 名称 配置信息 报名 例:jar -cvf my.jar 1.txt mymenu
注意:必须本地注册过jar才能打开jar文件。
第三部分 综合练习
一.创建一个有菜单的窗口,向文本框中输入文本,菜单中具备打开,保存,退出功能。
源代码:
package mymenu;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MyMenuTest
{
//设置基本组件
private Frame f;
private MenuBar bar;
private TextArea ta;
private Menu fileMenu;
private MenuItem openItem,saveItem,closeItem;
private FileDialog openDia,saveDia;
private File file;
//构造方法启动图形化界面
MyMenuTest()
{
init();
}
//建立方法
public void init()
{
f = new Frame("my window");
f.setBounds(300,100,650,600);
bar = new MenuBar();
ta = new TextArea();
fileMenu = new Menu("文件");
openItem = new MenuItem("打开");
saveItem = new MenuItem("保存");
closeItem = new MenuItem("退出");
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(closeItem);
bar.add(fileMenu);
f.setMenuBar(bar);
openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);
f.add(ta);
myEvent();
f.setVisible(true);
}
//设置事件监听器
private void myEvent()
{
//设置保存菜单项事件
saveItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(file==null)
{
saveDia.setVisible(true);
String dirPath = saveDia.getDirectory();
String fileName = saveDia.getFile();
if(dirPath==null || fileName==null)
return ;
file = new File(dirPath,fileName);
}
try
{
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
String text = ta.getText();
bufw.write(text);
//bufw.flush();
bufw.close();
}
catch (IOException ex)
{
throw new RuntimeException();
}
}
});
//设置打开菜单项事件
openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openDia.setVisible(true);
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
//System.out.println(dirPath+"..."+fileName);
if(dirPath==null || fileName==null)
return ;
ta.setText("");
file = new File(dirPath,fileName);
try
{
BufferedReader bufr = new BufferedReader(new FileReader(file));
String line = null;
while((line=bufr.readLine())!=null)
{
ta.append(line+"\r\n");
}
bufr.close();
}
catch (IOException ex)
{
throw new RuntimeException("读取失败");
}
}
});
//设置关闭菜单项事件
closeItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
//设置窗口事件(关闭窗口)
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new MyMenuTest();
}
}
第一部分 图形化界面基本概述
一.人机交互的两种方式
1.GUI
1)Graphical User Interface(图形用户接口)
图形化界面:用图形的方式来显示计算机操作的界面,这样更方便直观,使用者易于 接受,容易上手操作。
2.CLI
1)Command line User Interface(命令行用户接口)
命令行方式:需要有一个控制台,输入特定的 指令,让计算机完成一些操作。较为麻烦,需 要记录住一些命令。就是常见的Dos命令行操作。
2)dos命令行,课程中常见的命令。
dir : 列出当前目录下的文件以及文件夹
md : 创建目录
rd : 删除目录
cd : 进入指定目录
cd.. : 退回到上一级目录
cd/ : 退回到根目录
del : 删除文件
exit : 推出dos命令行
二.图形化界面工具
1.Java.Awt包
1)java.Awt:Abstract Window ToolKit(抽象窗口工具包)
需要调用本地系统方法实现功能。属于重量级控件。
2)特点
跨平坦性弱,更依赖于平台(跨平台后,个别属性有变化)。
2.Java.Swing包
1)Java.Swing
在AWT的基础上,建立的一套图形化界面系统,其中提供了更多的组件,而且完全由java实现。增强了移植性,属轻量级控件。
2)特点
不依赖平台,功能更强。
三.常用的体系继承。
Component(组件)---|Button(按钮)
---|Label(标签)(封装文字)
---|Checkbox(复选框)
---|TextComponet(文本组件)---|TextArea(文本区域)
---|TextField(文本框)
---|Container(容器) --------------|Panel(面板)
---|Window(窗口) ---|Frame(框架)
---|Dialog(对话框)---|FileDialog(文件对话框)
Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。
四.布局管理器
1.概念:容器中的组件的排放方式,就是布局
2.常见的布局管理器:
1)FlowLayout(流式布局管理器)
从左到右的顺序排列。
Panel默认的布局管理器
2)BorderLayout(边界布局管理器)
东,南,西,北,中(默认居中,填充,添加新组建覆盖)
Frame默认的布局管理器。
3)GridLayout(网格布局管理器)
规则的矩阵(例如:计算器)
4)GardLayout(卡片布局管理器)
选项卡
5)GridBagLayout(网格包布局管理器)
非规则的矩阵(占用多个格子)
最方便的布局是坐标式布局(C语言)。
五.创建图形化界面。
1.创建frame窗体
Frame f=new Frame("my Awt");
创建一个标题为”my Awt”的窗口框架对象
2.对窗体进行基本设置(比如:大小位置布局)
f.setSize(500,400);
将组件移到新位置,继承Component方法
3.定义组建
Button b=new Button("按钮");
定义一个名称为”按钮”的按钮
4.将组件通过窗体的add方法添加到窗体中
f.setLayout(new FlowLayout());
添加按钮到窗口框架,默认为边界布局。继承Container方法
5.让窗体显示
setVisible(true)
六.事件监听机制
1.事件源。
就是awt包或者swing包中的那些图形界面组件。
界面上虚线框在哪,哪就是当前事件源。
2.事件。
每一个事件源都有自己特有的对应事件和共性事件。
3.监听器。
将可以触发每一个事件的动作(不止一个动作),都已经封装到监听器中。
适配器:接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。
监听器方法超过三个的都配有适配器。
例如:WindowAdapter。
4.事件处理。
引发事件后处理方式
5.事件监听机制流程图
6.常见事件的分类
1)窗口事件
对框架窗口操作的事件
AddWindowListener: 添加指定的窗口侦听器,以从此窗口接收窗口事件。
2)Action事件(没有适配器)
对按钮操作的事件。也可以叫活动监听。键盘鼠标都可以操作。
AddActionListener:添加指定动作的侦听器,以接收发自指定按键的动作事件。
3)鼠标事件
鼠标动作产生的事件。属于Component组件中。
AddMouseListener:添加指定的鼠标侦听器,以接收发自此组件的鼠标事件。
双击事件:判断e.getClickCount()次数。
4)键盘事件
键盘动作产生的事件。属于Component组件中。
AddKeyListener:添加指定的按键侦听器,以接收发自此组件的按键事件。
Esc退出:判断e.getKeyCode()==KeyEvent.VK_ESCAPE
组合键:判断e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER
consume:键入有效的值。也就是屏蔽键。
第二部分 组件应用
一.对话框Dialog
1.概念:Dialog 是一个带标题和边界的顶层窗口。
2.建立对象
Dialog d=new Dialog(Dialog owner, String title, boolean modal)
owner:依赖窗口;title:标题;modal:模式(定义窗口弹出后其他窗体是否可以操作)
d.add(Label):添加时间描述信息。
二.菜单
1.Menu
对象是从菜单栏部署的下拉式菜单组件。
2.MenuBar
绑定到框架的菜单栏的平台
3.MenuItem
默认的 MenuItem 对象包含一个简单的加标签的菜单项
包含关系:菜单栏里添加菜单,菜单里可以添加菜单项,菜单里可以添加菜单。
三.文本区域
1.TextArea对象是显示文本的多行区域。可以将它设置为允许编辑或只读。
2.构造函数TextArea(int rows,int columns)
构造一个新文本区,该文本区具有指定的行数和列数,并将空字符串作为文本。
3.append(String str): 将给定文本追加到文本区的当前文本。
四.jar包制作
1.将多个类封装到了一个包(package)中。
2.定义一个jar包的配置信息。
定义一个文件a.txt 。文件内容内容为:
Main-Class:(空格)包名.类名(回车)
3.打jar包。
jar -cvfm my.jar a.txt 包名
4.通过winrar程序进行验证,查看该jar的配置文件中是否有自定义的配置信息。
5.通过工具--文件夹选项--文件类型--jar类型文件,通过高级,定义该jar类型文件的打开动作的关联程序。
jdk\bin\javaw.exe -jarjar -cvf 名称 配置信息 报名 例:jar -cvf my.jar 1.txt mymenu
注意:必须本地注册过jar才能打开jar文件。
第三部分 综合练习
一.创建一个有菜单的窗口,向文本框中输入文本,菜单中具备打开,保存,退出功能。
源代码:
package mymenu;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MyMenuTest
{
//设置基本组件
private Frame f;
private MenuBar bar;
private TextArea ta;
private Menu fileMenu;
private MenuItem openItem,saveItem,closeItem;
private FileDialog openDia,saveDia;
private File file;
//构造方法启动图形化界面
MyMenuTest()
{
init();
}
//建立方法
public void init()
{
f = new Frame("my window");
f.setBounds(300,100,650,600);
bar = new MenuBar();
ta = new TextArea();
fileMenu = new Menu("文件");
openItem = new MenuItem("打开");
saveItem = new MenuItem("保存");
closeItem = new MenuItem("退出");
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(closeItem);
bar.add(fileMenu);
f.setMenuBar(bar);
openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);
f.add(ta);
myEvent();
f.setVisible(true);
}
//设置事件监听器
private void myEvent()
{
//设置保存菜单项事件
saveItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(file==null)
{
saveDia.setVisible(true);
String dirPath = saveDia.getDirectory();
String fileName = saveDia.getFile();
if(dirPath==null || fileName==null)
return ;
file = new File(dirPath,fileName);
}
try
{
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
String text = ta.getText();
bufw.write(text);
//bufw.flush();
bufw.close();
}
catch (IOException ex)
{
throw new RuntimeException();
}
}
});
//设置打开菜单项事件
openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openDia.setVisible(true);
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
//System.out.println(dirPath+"..."+fileName);
if(dirPath==null || fileName==null)
return ;
ta.setText("");
file = new File(dirPath,fileName);
try
{
BufferedReader bufr = new BufferedReader(new FileReader(file));
String line = null;
while((line=bufr.readLine())!=null)
{
ta.append(line+"\r\n");
}
bufr.close();
}
catch (IOException ex)
{
throw new RuntimeException("读取失败");
}
}
});
//设置关闭菜单项事件
closeItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
//设置窗口事件(关闭窗口)
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new MyMenuTest();
}
}
相关文章推荐
- 黑马程序员—java基础_GUI图形化界面
- 黑马程序员——Java基础---图形化界面编程
- 黑马程序员—JAVA基础—GUI(图形化界面编程)
- 黑马程序员--Java基础学习(GUI图形化界面)第二十二天
- 黑马程序员——Java基础--GUI(图形化界面)
- 黑马程序员:Java基础总结----GUI图形化界面
- 黑马程序员----java基础图形化界面GUI
- 黑马程序员___17java基础图形化界面以及网络传输
- 黑马程序员——Java基础--GUI图形化界面
- 黑马程序员--------------java基础----------------- 图形化界面
- 黑马程序员:Java基础总结----GUI图形化界面
- 黑马程序员_Java基础_GUI图形界面入门
- Java图形化界面GUI-02-----黑马程序员
- 黑马程序员——Java基础——GUI图形化用户界面
- 黑马程序员-Java-图形化界面-day22
- 黑马程序员java学习笔记——GUI图形化界面
- 黑马程序员-Java之自定义图形化界面的浏览器访问本地的Tomcat服务器
- 黑马程序员——Java基础——GUI图形界面编程
- java基础整理二十二(图形化界面)
- Java基础之图形化界面(一)