您的位置:首页 > 产品设计 > UI/UE

黑马程序员 知识点总结-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

      菜单:Menu
Menu对象是从菜单栏部署的下拉式菜单组件。菜单的所有项必须

                           属于类
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培训、期待与您交流! ----------------------

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  黑马程序员 GUI