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