图像界面

件处理及监听处理

1.键盘事件(KeyEvent)及监听处理(KeyListener)

1.1加入事件监听

super.addWindowListener(new WindowAdapter(){

1.2 KeyListener接口方法

void keyTyped(KeyEvent e)                           //键入某个键时调用
void keyPressed(KeyEvent e) //键盘按下时调用
void keyReleased(KeyEvent e) //键盘松开时调用

1.3 KeyEvent 事件的常用方法

public int getKeyCode()                                                //返回键入字符的键码
public static String getKeyText(int keyCode) // 返回键入的信息,如“HOME”、“F1”等

使用KeyAdapter适配器对键盘事件的监听

2.鼠标事件及监听处理

2.1 MouseListener 接口方法

void mouseReleased(MouseEvent e)                                            //鼠标松开时调用
void mouseExited(MouseEvent e) //鼠标离开组件时调用

2.2 MouseEvent 事件的常用方法

public static final int BUTTON1/BUTTON2/BUTTON3                             //   表示鼠标左键/滚轴/右键的常量
public int getButton() //以数字形式返回按下的鼠标键
public int getClickCount() //返回鼠标的单击次数
public int getX()/getY() //返回鼠标操作的X/Y坐标

通过MouseAdapter实现对指定鼠标操作的监听

3.单选按钮(JRadioButton)

3.1 JRadioButton 类的常用方法

public JRadioButton(Icon icon,boolean selected)                             //建立一个单选钮,并指定图片和其是否被选定
public JRadioButton(String text) //建立一个单选钮,并指定文字,默认为不选定
public JRadioButton(String text,Icon icon,boolean selected) //建立一个单选钮,并指定图片、文字和其是否选定
public void setText(String text) // 设置显示文本
public void setIcon(Icon defaultIcon) // 设置图片

3.2 将所有单选钮加入一个组中

ButtonGroup group = new ButtonGroup();
group.add(this.jrb1);
group.add(this.jrb2);
group.add(this.jrb3);

3.3 JRadioButton 事件处理(ItemListener)

3.3.1 ItemListener接口方法

void itemStateChanged(ItemEvent e)                         // 当用户取消或选定某个选项时调用

3.3.2 ItemEvent 类的常用方法及常量

public static final int SELECTED/DESELECTED                    // 选项被选中/未被选中
public Object getItem() // 返回受事件影响的选项
public int getStateChange() // 返回选定状态的类型(已选择或已取消)

4 复选框 JCheckBox

4.1 JCheckBox 类常用方法

public JCheckBox(Icon icon,boolean selected)                        //创建一个带图标的对象,并指定其是否选定
public JCheckBox(String text,boolean selected,Icon icon) //创建一个带文本和图标的对象,并指定其是否被选定

5.菜单组件(JMenu 与 JMenuBar)

5.1 JMenubar 的常用方法

public JMenuBar()                                                   //创建新的JMenuBar对象

public JMenu add(JMenu c)                                            //将指定的JMenu 加入到JMenuBar 中
public JMenu getMenu(int index) //返回指定位置的菜单
public int getMenuCount() // 返回菜单栏上的菜单数

5.2 JMenu 的常用方法

public JMenuItem add(JMenuItem menuItem)                           // 增加新的菜单项
public void addSeparator() //加入分割线

5.3 JMenuItem 类的常用方法

newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK))     //设置新建快捷键的组合键
newItem.setMnemonic(KeyEvent.VK_N) // 添加新建项的助记符

6 文件选择框 JFileChooser

6.1 JFileChooser 类的常用方法

public JFileChooser(String currentDirectoryPath)                                          //指定文件选择的目录
public int showSaveDialog(Component parent throws HeadlessException //打开保存对话框,返回保存状态
public void setApproveButtonText(String approveButtonText) //设置文件选择的接收按钮内容

实验报告 简易记事本的开发

源代码:

package Java;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream; import javax.swing.*; public class TextPad implements ActionListener{
JFrame frame;
JMenuBar bar;
JMenu fileMenu,editMenu;
JMenuItem newItem,openItem,saveItem,keepItem,closeItem;
ImageIcon newIcon,openIcon,saveIcon,keepIcon,closeIcon;
JScrollPane scroll;
JTextArea area;
JFileChooser chooser;
File file;
private Object label; public TextPad() {
frame = new JFrame("YZ");
bar = new JMenuBar();
fileMenu =new JMenu("文件");
editMenu = new JMenu("编辑");
newIcon = new ImageIcon("c:"+File.separator+"Users"+File.separator+"Jeff"+File.separator+"Desktop"+File.separator+"新建.jpg");
openIcon = new ImageIcon("c:"+File.separator+"Users"+File.separator+"Jeff"+File.separator+"Desktop"+File.separator+"打开.jpg");
saveIcon = new ImageIcon("c:"+File.separator+"Users"+File.separator+"Jeff"+File.separator+"Desktop"+File.separator+"另存为.jpg");
keepIcon = new ImageIcon("c:"+File.separator+"Users"+File.separator+"Jeff"+File.separator+"Desktop"+File.separator+"保存.jpg");
closeIcon = new ImageIcon("c:"+File.separator+"Users"+File.separator+"Jeff"+File.separator+"Desktop"+File.separator+"关闭.jpg"); newItem = new JMenuItem("新建(N)",newIcon);
openItem = new JMenuItem("打开(O)",openIcon);
saveItem = new JMenuItem("另存为(A)",saveIcon);
keepItem = new JMenuItem("保存(S)",keepIcon);
closeItem = new JMenuItem("关闭(X)",closeIcon); area = new JTextArea();
scroll = new JScrollPane(area); newItem.setMnemonic(KeyEvent.VK_N);
openItem.setMnemonic(KeyEvent.VK_O);
saveItem.setMnemonic(KeyEvent.VK_A);
keepItem.setMnemonic(KeyEvent.VK_S);
closeItem.setMnemonic(KeyEvent.VK_X); newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK));
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK));
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
keepItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));
closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK)); fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(keepItem);
fileMenu.addSeparator();
fileMenu.add(closeItem); newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
keepItem.addActionListener(this);
closeItem.addActionListener(this); bar.add(fileMenu);
bar.add(editMenu); frame.setJMenuBar(bar);
frame.add(scroll);
frame.setSize(400,300);
frame.setVisible(true); } @Override
public void actionPerformed(ActionEvent event) { Object obj = event.getSource();
JMenuItem item = null;
JMenuItem memoryItem = null;
if(obj instanceof JMenuItem) {
JMenuItem item1=(JMenuItem) obj;
if(item1==newItem) {
new TextPad();
}else if (item1==openItem) {
chooser =new JFileChooser();
chooser.showOpenDialog(null);
file = chooser.getSelectedFile();
try {
FileInputStream fis=new FileInputStream(file);
byte[] b = new byte [fis.available()];
fis.read(b);
area.append(new String(b));
fis.close();
} catch (FileNotFoundException e) { e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }else if(item1 ==saveItem) { chooser.showSaveDialog(null);
file = chooser.getSelectedFile(); }
try {
if(!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file);
byte[] b=area.getText().getBytes();
fos.write(b);
fos.close();
} catch (FileNotFoundException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace();
}
}else if(item == closeItem) { System.exit(1);
}else if(item==memoryItem) {
if(file!=null) {
try {
PrintStream out = new PrintStream(new FileOutputStream(file));
out.print(this.area.getText());
out.close();
} catch (Exception e) {
((AbstractButton) this.label).setText("文件保存失败");
e.printStackTrace();
}
}
}
}
} package Java; public class TestPad {
public static void main(String args[]) {
new TextPad();
}
}

程序运行截图:

总结:这只是一个最基本的记事本,结合老师上课所讲的,很容易实现简单操作。学到了一些监视器的运用。要想开发功能更全面的记事本还需要加倍努力学习相关知识。

第十三周学习总结&实验报告(八)的更多相关文章

  1. 第五周学习总结&实验报告(三)

    第五周学习总结&实验报告(三) 这一周又学习了新的知识点--继承. 一.继承的基本概念是: *定义一个类,在接下来所定义的类里面如果定义的属性与第一个类里面所拥有的属性一样,那么我们在此就不需 ...

  2. 第八周学习总结&实验报告(6)

    实验六 异常 一.实验目的: (1)理解异常的基本概念: (2)掌握异常处理方法及熟悉常见异常的捕获方法. 二.实验要求: (1)练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使 ...

  3. 第五周学习总结&实验报告三

    第五周课程总结 1.this和super的区别: this:访问本类中的属性,如果本类没有此属性则从父类中继续查找:访问本类中的方法,如果本类中没有此方法则从父类中继续查找:调用本类构造,必须放在构造 ...

  4. 第九周学习总结&实验报告七

    实验报告: 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验 ...

  5. 第八周学习总结&实验报告六

    实验总结 :类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 : 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异 ...

  6. 第九周学习总结&实验报告(7)

    完成火车站售票程序的模拟. 要求: (1)总票数1000张; (2)10个窗口同时开始卖票; (3) 卖票过程延时1秒钟; (4)不能出现一票多卖或卖出负数号票的情 况 实验代码: package y ...

  7. 第六周学习总结&实验报告四

    一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...

  8. 201871010111-刘佳华《面向对象程序设计(java)》第十三周学习总结

    201871010111-刘佳华<面向对象程序设计(java)>第十三周学习总结 实验十一 图形界面事件处理技术 实验时间 2019-11-22 第一部分:理论知识总结 1.事件源:能够产 ...

  9. “2017面向对象程序设计(Java)第十三周学习总结”存在问题的反馈及本周教学安排

    “2017面向对象程序设计(Java)第十三周学习总结”存在问题的反馈及本周教学安排1. 图形界面事件处理技术是Java GUI编程核心技术,要求同学们掌握其基本原理和基本编程模型:2. 本周四理论课 ...

随机推荐

  1. [洛谷P3261] [JLOI2015]城池攻占(左偏树)

    不得不说,这道题目是真的难,真不愧它的“省选/NOI-”的紫色大火题!!! 花了我晚自习前半节课看题解,写代码,又花了我半节晚自习调代码,真的心态爆炸.基本上改得和题解完全一样了我才过了这道题!真的烦 ...

  2. python开发之路-day01

    1.Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为A ...

  3. python-MySQL数据库--- 基础篇

    MySQL数据库基础 数据库系统(database system) 1.数据库系统(database system)         数据库系统是计算机系统中一种专门管理数组资源的系统,数据库存储的是 ...

  4. 获取Linux内核未导出符号的几种方式

    从Linux内核的2.6某个版本开始,内核引入了导出符号的机制.只有在内核中使用EXPORT_SYMBOL或EXPORT_SYMBOL_GPL导出的符号才能在内核模块中直接使用.然而,内核并没有导出所 ...

  5. window下 nginx 80端口被占用

    问题:启动nginx没有反应,查看日志提示 bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in ...

  6. jquery实现按键增加删除css属性(hide)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. ActiveMQ的简单使用

    项目中使用的介绍 一.运行ActiveMQ 在文件路径下...\apache-activemq-5.13.3\bin\win64 运行activemq.bat 这是系统中的使用,运行后还可以访问相应的 ...

  8. 攻防世界--insanity

    测试文件:https://adworld.xctf.org.cn/media/task/attachments/d2a7dde552e647688230e80b2767b912 1.准备 获得信息: ...

  9. Css3-文字

    一.text-overflow   text-overflow用来设置是否使用一个省略标记(...)标示对象内文本的溢出. 语法:text-overflow:clip(默认属性,表示剪切) | ell ...

  10. Java并发(具体实例)—— 构建高效且可伸缩的结果缓存

    这个例子来自<Java并发编程实战>第五章.本文将开发一个高效且可伸缩的缓存,文章首先从最简单的HashMap开始构建,然后分析它的并发缺陷,并一步一步修复. hashMap版本     ...