黑马程序员——GUI图形用户界面
2013-05-31 22:25
405 查看
------- android培训、java培训、期待与您交流! ----------
GUI(Graphical User Interface)由组件和容器组成,容器也是一种组件
Frame frame = new Frame();
常用的方法
setVisible()
设置可见
setSize(int width, int hight) 设置窗口大小
setLocation(int x, int y) 设置窗口在桌面显示的位置
add(button)
添加一个按钮, 也可以添加其它组件
语法
Button button = new Button(String buttonName);
Frame中提供了setLayout(LayoutManagerlayout)方法来给窗口设置布局
事件源: 发生事件的组件
监听器: 实现了Listener接口的类,包含若干对事件处理的方法,
要添加监听器必须先定义类实现Listener接口并实现里面的抽象方法
监听器适配器:
这是个实现了Listener接口的抽象类,实现了接口中的方法(空实现),这样就不用在定义监听器时实现所有的方法,
只需要重写需要的处理事件的方法就可以了,比如窗口的适配器是WindowAdapter类
常用的添加添加事件监听器的方法
Frame.addWindowListener(Listener lis) 给窗体添加事件的方法
button.addMouseListener(Listener lis) 给按钮添加鼠标点击事件监听器
textArea.addKeyListener(Listener lis) 给文本域添加键盘事件监听器
动作监听器
ActionListener 可以给事件源添加一个事件监听器,按钮,
鼠标都可以是事件源
菜单, Dialog对话框
Frame中setMenuBar方法可以将菜单栏添加到frame
GUI(Graphical User Interface)由组件和容器组成,容器也是一种组件
Frame类
这个类用于创建窗口Frame frame = new Frame();
常用的方法
setVisible()
设置可见
setSize(int width, int hight) 设置窗口大小
setLocation(int x, int y) 设置窗口在桌面显示的位置
add(button)
添加一个按钮, 也可以添加其它组件
Button类
用于穿件一个按钮的组件语法
Button button = new Button(String buttonName);
布局
用于布局的类有一下几种FlowLayout BorderLayout GridLayout GridBagLayout CardLayout,它们都实现了LayoutManager接口Frame中提供了setLayout(LayoutManagerlayout)方法来给窗口设置布局
事件监听器
事件就是用户的操作事件源: 发生事件的组件
监听器: 实现了Listener接口的类,包含若干对事件处理的方法,
要添加监听器必须先定义类实现Listener接口并实现里面的抽象方法
监听器适配器:
这是个实现了Listener接口的抽象类,实现了接口中的方法(空实现),这样就不用在定义监听器时实现所有的方法,
只需要重写需要的处理事件的方法就可以了,比如窗口的适配器是WindowAdapter类
常用的添加添加事件监听器的方法
Frame.addWindowListener(Listener lis) 给窗体添加事件的方法
button.addMouseListener(Listener lis) 给按钮添加鼠标点击事件监听器
textArea.addKeyListener(Listener lis) 给文本域添加键盘事件监听器
动作监听器
ActionListener 可以给事件源添加一个事件监听器,按钮,
鼠标都可以是事件源
其它组件类
MenuBar 菜单栏, MenuItem菜单项, Menu菜单, Dialog对话框
Frame中setMenuBar方法可以将菜单栏添加到frame
代码应用-模拟Window记事本
package cn.itcast.gui.exercise; import java.awt.FileDialog; import java.awt.Font; import java.awt.Frame; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; public class Notepad extends Frame { private static final long serialVersionUID = 1L; private MenuItem openMenuItem; // 由于多个方法中都要使用, 所以定义为成员变量 private MenuItem saveMenuItem; private MenuItem exitMenuItem; private MenuItem gbkMenuItem; private MenuItem utf8MenuItem; private TextArea textArea; private String encoding = "GBK"; private File file; public Notepad() { initFrame(); // 初始化窗体 generateMenuBar(); // 构建菜单栏 generateTextArea(); // 构建文本域 addListener(); // 添加监听器 setVisible(true); // 设置可见 } private void initFrame() { setTitle("记事本"); setSize(600, 400); setLocation(600, 100); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } private void generateMenuBar() { MenuBar menuBar = new MenuBar(); // 菜单栏 Menu fileMenu = new Menu("文件"); // 菜单 Menu editMenu = new Menu("编辑"); Menu searchMenu = new Menu("查看"); openMenuItem = new MenuItem("打开"); // 菜单项 saveMenuItem = new MenuItem("保存"); exitMenuItem = new MenuItem("退出"); gbkMenuItem = new MenuItem("GBK"); utf8MenuItem = new MenuItem("UTF-8"); fileMenu.add(openMenuItem); // 把菜单项装入菜单 fileMenu.add(saveMenuItem); fileMenu.add(exitMenuItem); searchMenu.add(gbkMenuItem); searchMenu.add(utf8MenuItem); menuBar.add(fileMenu); // 把菜单添加到菜单栏 menuBar.add(editMenu); menuBar.add(searchMenu); setMenuBar(menuBar); // 把菜单栏添加到Frame } private void generateTextArea() { textArea = new TextArea(); textArea.setFont(new Font("Courier New", Font.PLAIN, 15)); // 设置字体 add(textArea); // 添加到窗体 } private void addListener() { openMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { open(); } }); saveMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { save(); } }); exitMenuItem.addActionListener(new ActionListener() { // 给菜单项添加动作监听器 public void actionPerformed(ActionEvent e) { System.exit(0); // 被点击的时候退出 } }); textArea.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_O) // 按下Ctrl, // 并且按了O open(); if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) // Ctrl // + // S save(); } }); gbkMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { encoding = "GBK"; // 修改码表 loadFile(file); // 重新读取文件 } }); utf8MenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { encoding = "UTF-8"; loadFile(file); } }); } private void open() { FileDialog dialog = new FileDialog(this, "打开", FileDialog.LOAD); // 创建对话框 dialog.setVisible(true); // 显示 String dir = dialog.getDirectory(); // 获取选中的路径 String name = dialog.getFile(); // 获取选中的文件名 if (dir != null && name != null) { file = new File(dir, name); loadFile(file); } } private void loadFile(File file) { try (FileInputStream fis = new FileInputStream(file); // 定义输入流指向文件 ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 定义输出流指向内存 ) { byte[] buffer = new byte[1024]; int len; while ((len = fis.read(buffer)) != -1) // 读取文件数据, 写到内存 baos.write(buffer, 0, len); String content = new String(baos.toByteArray(), encoding); // 把内存中的数据转为String textArea.setText(content); // 设置TextArea中的文本为content } catch (IOException e) { e.printStackTrace(); } } private void save() { FileDialog dialog = new FileDialog(this, "保存", FileDialog.SAVE); dialog.setVisible(true); String dir = dialog.getDirectory(); String name = dialog.getFile(); if (dir != null && name != null) { File file = new File(dir, name); try (FileWriter fw = new FileWriter(file)) { fw.write(textArea.getText()); // 获取TextArea中的文本, 写出到文件 } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { new Notepad(); } }
相关文章推荐
- 黑马程序员——31,GUI图形用户界面
- 黑马程序员——GUI(图形用户界面)
- 黑马程序员——Java高级教程3_图形用户界面GUI
- 黑马程序员__图形用户界面GUI
- “黑马程序员” GUI 图形用户界面
- 黑马程序员—20—java基础:有关GUI图形用户界面学习笔记和学习心得体会
- 黑马程序员_<<GUI(图形用户界面)--------1>>
- 黑马程序员-基础-GUI图形用户界面
- 黑马程序员——GUI图形用户界面,几种布局管理器介绍
- 黑马程序员-Java语言基础– GUI 图形用户界面 第22天
- 黑马程序员——Java GUI(图形用户界面)
- 【黑马程序员】第九章:GUI(图形用户界面)
- <黑马程序员>如何编写图形用户界面(GUI)
- 黑马程序员——15Java图形用户界面GUI
- 黑马程序员_Java图形用户界面GUI
- 黑马程序员—图形用户界面GUI
- 黑马程序员- GUI图形用户界面
- 黑马程序员——GUI(图形用户界面)
- 黑马程序员_温习 GUI图形用户接口一 (个人笔记)摘要(GUI图形用户界面介绍-----布局管理器-----事件监听机制-----窗体事件---Action(执行事件)----鼠标事件----键
- 黑马程序员 Java基础<十一>---> GUI(图形用户界面)