黑马程序员 知识点总结-Java GUI
2013-12-31 16:49
453 查看
----------------------Android培训、Java培训、期待与您交流! ----------------------
【GUI图形用户界面】
GUI
Graphical User Interface(图形用户接口)用图形的方式,来显示计算机操作的界面,
这样更方便更直观。
Java为GUI提供的对象都存在java.awt和javax.swing两个包中。
CLI
Command line User Interface (命令行用户接口)就是常见的Dos命令行操作,需要
记忆一些常用的命令,操作不直观。
【Awt和Swing】
java.awt:AbstractWindow ToolKit(抽象窗口工具包),需要调用本地系统方法实现
功能,属重量级控件
javax.swing:在Awt的基础上建立的一套图形界面系统,其中提供了更多的组件,
而且完全由Java实现,增强了移植性,属轻量级控件。
【继承体系图】
Container:容器,一个特殊的组件,该组件中可以通过add方法添加其他组件进来
【布局管理器】
布局:容器中组件的排放方式。
常见的布局管理器:
Flowlayout(流式布局管理器)
从左到右的顺序排列
Panel默认的布局管理器
BorderLayout(边界布局管理器)
东,南,西,北,中
Frame默认的布局管理器
GridLayout(网格布局管理器)
规则的矩阵
CardLayout(卡片布局管理器)
选项卡
GridBagLayout(网格包布局管理器)
非规则的矩阵
【Frame窗体】
Frame是带有标题和边框的顶层窗口。Frame创建时是不可见的,可以通过setVisible
方法显示,若setVisible(false)则为隐藏窗体;可以通过setSize方法这只窗体大小;通
过setLocation方法设置窗体显示位置;通过add方法为窗体添加组件…
例:
// 创建一个标题为MyAet的窗体
Frame f = new Frame("MyAwt");
// 设置创体的大小
f.setSize(500, 400);
// 设置窗体的显示位置
f.setLocation(300, 200);
// 设置窗体的布局管理器
f.setLayout(new FlowLayout());
// 创建一个按钮
Button b = new Button("我是一个按钮");
// 为窗体添加一个按钮
f.add(b);
// 将窗体设置为显示
f.setVisible(true);
【事件监听】
事件监听机制的组成:
事件源:awt或swing包中的图形化界面组件
事件:每一个事件源都有自己特有的对应事件和共性事件
监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中
事件处理:对产生的动作进行处理
对于前三者,在Java中已有定义,直接获取其对象就可以了,我们要做的事情就
对产生的动作进行处理
监听机制流程图:
【窗口事件】
窗口事件包括打开、关闭、激活或停用、图标化或取消图标化等。处理窗口事件的
类要么实现WindowListener接口(及其包含的所有方法),要么扩展抽象类
WindowAdapter(仅重写所需的方法)。然后使用窗口的addWindowListener方法
将从该类所创建的侦听器对象向该 Window注册。
【Action事件】
动作事件,处理该事件实现ActionListener接口,而使用该类创建的对象可使用组
件的 addActionListener方法向该组件注册。在发生操作事件时,调用该对象的
actionPerformed方法。
【鼠标事件】
鼠标事件包括按下、释放、单击、进入或离开。处理鼠标事件的类要么实现
MouseListener接口(及其包含的所有方法),要么扩展抽象类MouseAdapter(仅
重写所需的方法)。然后使用组件的addMouseListener方法将从该类所创建的侦听
器对象向该组件注册。
【键盘事件】
键盘事件包括按下、释放或键入键。处理键盘事件的类要么实现KeyListener接口
(及其包含的所有方法),要么扩展抽象KeyAdapter类(仅重写有用的方法)。然
后使用组件的addKeyListener方法将从该类所创建的侦听器对象向该组件注册。
【菜单】
菜单栏:MenuBar
菜单:MenuMenu对象是从菜单栏部署的下拉式菜单组件。菜单的所有项必须
属于类
菜单项:MenuItemMenuItem对象是菜单的所有项之一
菜单添加方法:
创建菜单栏,菜单,菜单项
向菜单添加菜单项,或添加菜单作为子菜单
将菜单添加到菜单栏
通过setMenuBar()方法,将菜单添加到Frame中
【练习】
完成一个简单的记事本程序
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MyMenuTest {
private Frame f;// 窗体
private MenuBar bar;// 菜单栏
private Menu m;// 菜单
private MenuItem omi, smi, cmi;// 打开,保存,退出菜单项
private TextArea ta;// 文本区域
private FileDialog oDlg, sDlg;// 打开,保存对话框
private File file;// 要打开或要保存的文件
public MyMenuTest()// 构造方法
{
init();
}
public void init()// 窗体初始化
{
// 窗体设置
f = new Frame("MyFrame");
f.setBounds(300, 200, 500, 400);
// 创建菜单栏,菜单,菜单项,文本区域,打开对话框,保存对话框
bar = new MenuBar();
m = new Menu("文件");
omi = new MenuItem("打开");
smi = new MenuItem("保存");
cmi = new MenuItem("退出");
ta = new TextArea();
oDlg = new FileDialog(f, "打开", FileDialog.LOAD);
sDlg = new FileDialog(f, "打开", FileDialog.SAVE);
// 为菜单添加菜单项
m.add(omi);
m.add(smi);
m.add(cmi);
// 为菜单栏天津唉菜单
bar.add(m);
// 为窗体设置菜单栏
f.setMenuBar(bar);
// 为窗体添加文本区域
f.add(ta);
// 添加事件
myEvent();
f.setVisible(true);
}
public void myEvent() {
// 为窗体添加监听器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 为退出菜单项添加监听器
cmi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
// 为打开菜单项添加监听器
omi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
open();
}
});
// 为保存菜单项添加监听器
smi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
save();
}
});
}
// 定义方法,保存文件
private void save() {
// 如果文件不存在,则弹出保存对话框
if (file == null) {
sDlg.setVisible(true);
String dir = sDlg.getDirectory();
String name = sDlg.getFile();
if (dir == null || name == null)
return;
file = new File(dir, name);
}
// 创建输出流对象,将文本区域的数据写入到文件
BufferedWriter bufw = null;
try {
bufw = new BufferedWriter(new FileWriter(file));
String info = ta.getText();
bufw.write(info);
bufw.flush();
} catch (IOException e) {
throw new RuntimeException("保存失败!");
} finally {
try {
if (bufw != null)
bufw.close();
} catch (IOException e) {
System.out.println("关闭流失败");
}
}
}
// 定义方法,打开文件
private void open() {
oDlg.setVisible(true);
String dir = oDlg.getDirectory();
String name = oDlg.getFile();
if (dir == null || name == null)
return;
System.out.println(dir + "\t" + name);
file = new File(dir, name);
ta.setText("");
BufferedReader bufr = null;
try {
bufr = new BufferedReader(new FileReader(file));
String line = null;
while ((line = bufr.readLine()) != null) {
System.out.println(line);
ta.append(line + "\t\n");
}
} catch (IOException ex) {
throw new RuntimeException("打开文件失败!");
} finally {
try {
if (bufr != null)
bufr.close();
} catch (IOException ex) {
System.out.println("输入流关闭失败!");
}
}
}
public static void main(String[] args) {
new MyMenuTest();
}
}
----------------------Android培训、Java培训、期待与您交流! ----------------------
----------------------Android培训、Java培训、期待与您交流! ----------------------
【GUI图形用户界面】
GUI
Graphical User Interface(图形用户接口)用图形的方式,来显示计算机操作的界面,
这样更方便更直观。
Java为GUI提供的对象都存在java.awt和javax.swing两个包中。
CLI
Command line User Interface (命令行用户接口)就是常见的Dos命令行操作,需要
记忆一些常用的命令,操作不直观。
【Awt和Swing】
java.awt:AbstractWindow ToolKit(抽象窗口工具包),需要调用本地系统方法实现
功能,属重量级控件
javax.swing:在Awt的基础上建立的一套图形界面系统,其中提供了更多的组件,
而且完全由Java实现,增强了移植性,属轻量级控件。
【继承体系图】
Container:容器,一个特殊的组件,该组件中可以通过add方法添加其他组件进来
【布局管理器】
布局:容器中组件的排放方式。
常见的布局管理器:
Flowlayout(流式布局管理器)
从左到右的顺序排列
Panel默认的布局管理器
BorderLayout(边界布局管理器)
东,南,西,北,中
Frame默认的布局管理器
GridLayout(网格布局管理器)
规则的矩阵
CardLayout(卡片布局管理器)
选项卡
GridBagLayout(网格包布局管理器)
非规则的矩阵
【Frame窗体】
Frame是带有标题和边框的顶层窗口。Frame创建时是不可见的,可以通过setVisible
方法显示,若setVisible(false)则为隐藏窗体;可以通过setSize方法这只窗体大小;通
过setLocation方法设置窗体显示位置;通过add方法为窗体添加组件…
例:
// 创建一个标题为MyAet的窗体
Frame f = new Frame("MyAwt");
// 设置创体的大小
f.setSize(500, 400);
// 设置窗体的显示位置
f.setLocation(300, 200);
// 设置窗体的布局管理器
f.setLayout(new FlowLayout());
// 创建一个按钮
Button b = new Button("我是一个按钮");
// 为窗体添加一个按钮
f.add(b);
// 将窗体设置为显示
f.setVisible(true);
【事件监听】
事件监听机制的组成:
事件源:awt或swing包中的图形化界面组件
事件:每一个事件源都有自己特有的对应事件和共性事件
监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中
事件处理:对产生的动作进行处理
对于前三者,在Java中已有定义,直接获取其对象就可以了,我们要做的事情就
对产生的动作进行处理
监听机制流程图:
【窗口事件】
窗口事件包括打开、关闭、激活或停用、图标化或取消图标化等。处理窗口事件的
类要么实现WindowListener接口(及其包含的所有方法),要么扩展抽象类
WindowAdapter(仅重写所需的方法)。然后使用窗口的addWindowListener方法
将从该类所创建的侦听器对象向该 Window注册。
【Action事件】
动作事件,处理该事件实现ActionListener接口,而使用该类创建的对象可使用组
件的 addActionListener方法向该组件注册。在发生操作事件时,调用该对象的
actionPerformed方法。
【鼠标事件】
鼠标事件包括按下、释放、单击、进入或离开。处理鼠标事件的类要么实现
MouseListener接口(及其包含的所有方法),要么扩展抽象类MouseAdapter(仅
重写所需的方法)。然后使用组件的addMouseListener方法将从该类所创建的侦听
器对象向该组件注册。
【键盘事件】
键盘事件包括按下、释放或键入键。处理键盘事件的类要么实现KeyListener接口
(及其包含的所有方法),要么扩展抽象KeyAdapter类(仅重写有用的方法)。然
后使用组件的addKeyListener方法将从该类所创建的侦听器对象向该组件注册。
【菜单】
菜单栏:MenuBar
菜单:MenuMenu对象是从菜单栏部署的下拉式菜单组件。菜单的所有项必须
属于类
MenuItem或其子类之一
菜单项:MenuItemMenuItem对象是菜单的所有项之一
菜单添加方法:
创建菜单栏,菜单,菜单项
向菜单添加菜单项,或添加菜单作为子菜单
将菜单添加到菜单栏
通过setMenuBar()方法,将菜单添加到Frame中
【练习】
完成一个简单的记事本程序
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MyMenuTest {
private Frame f;// 窗体
private MenuBar bar;// 菜单栏
private Menu m;// 菜单
private MenuItem omi, smi, cmi;// 打开,保存,退出菜单项
private TextArea ta;// 文本区域
private FileDialog oDlg, sDlg;// 打开,保存对话框
private File file;// 要打开或要保存的文件
public MyMenuTest()// 构造方法
{
init();
}
public void init()// 窗体初始化
{
// 窗体设置
f = new Frame("MyFrame");
f.setBounds(300, 200, 500, 400);
// 创建菜单栏,菜单,菜单项,文本区域,打开对话框,保存对话框
bar = new MenuBar();
m = new Menu("文件");
omi = new MenuItem("打开");
smi = new MenuItem("保存");
cmi = new MenuItem("退出");
ta = new TextArea();
oDlg = new FileDialog(f, "打开", FileDialog.LOAD);
sDlg = new FileDialog(f, "打开", FileDialog.SAVE);
// 为菜单添加菜单项
m.add(omi);
m.add(smi);
m.add(cmi);
// 为菜单栏天津唉菜单
bar.add(m);
// 为窗体设置菜单栏
f.setMenuBar(bar);
// 为窗体添加文本区域
f.add(ta);
// 添加事件
myEvent();
f.setVisible(true);
}
public void myEvent() {
// 为窗体添加监听器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 为退出菜单项添加监听器
cmi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
// 为打开菜单项添加监听器
omi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
open();
}
});
// 为保存菜单项添加监听器
smi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
save();
}
});
}
// 定义方法,保存文件
private void save() {
// 如果文件不存在,则弹出保存对话框
if (file == null) {
sDlg.setVisible(true);
String dir = sDlg.getDirectory();
String name = sDlg.getFile();
if (dir == null || name == null)
return;
file = new File(dir, name);
}
// 创建输出流对象,将文本区域的数据写入到文件
BufferedWriter bufw = null;
try {
bufw = new BufferedWriter(new FileWriter(file));
String info = ta.getText();
bufw.write(info);
bufw.flush();
} catch (IOException e) {
throw new RuntimeException("保存失败!");
} finally {
try {
if (bufw != null)
bufw.close();
} catch (IOException e) {
System.out.println("关闭流失败");
}
}
}
// 定义方法,打开文件
private void open() {
oDlg.setVisible(true);
String dir = oDlg.getDirectory();
String name = oDlg.getFile();
if (dir == null || name == null)
return;
System.out.println(dir + "\t" + name);
file = new File(dir, name);
ta.setText("");
BufferedReader bufr = null;
try {
bufr = new BufferedReader(new FileReader(file));
String line = null;
while ((line = bufr.readLine()) != null) {
System.out.println(line);
ta.append(line + "\t\n");
}
} catch (IOException ex) {
throw new RuntimeException("打开文件失败!");
} finally {
try {
if (bufr != null)
bufr.close();
} catch (IOException ex) {
System.out.println("输入流关闭失败!");
}
}
}
public static void main(String[] args) {
new MyMenuTest();
}
}
----------------------Android培训、Java培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员 知识点总结-Java帮助文档的生成
- 黑马程序员 知识点总结-Java继承
- 黑马程序员 知识点总结-Java IO(二)字符流
- 黑马程序员 知识点总结-Java IO(三)字节流
- 黑马程序员 知识点总结-Java多态
- 黑马程序员 知识点总结-Java中几个常用的类(一)
- 黑马程序员-javaGUI编程总结
- 黑马程序员 知识点总结-Java注解
- 黑马程序员--GUI编程知识点总结
- 黑马程序员--java基础知识点总结
- 黑马程序员_java_GUI总结
- 黑马程序员-java中内部类知识点总结
- 黑马程序员 知识点总结-Java单例设计模式
- 黑马程序员:Java基础总结----GUI图形化界面
- 黑马程序员 知识点总结-Java中几个常用的类(二)
- 黑马程序员 知识点总结-Java IO(四)转换流、打印流
- 黑马程序员--java基础--GUI总结
- 黑马程序员-java中内部类知识点总结
- 黑马程序员-java的GUI总结
- 黑马程序员---Java高新技术反射知识点总结