图像界面

件处理及监听处理

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. Libre OJ 2255 (线段树优化建图+Tarjan缩点+DP)

    题面 传送门 分析 主体思路:若x能引爆y,从x向y连一条有向边,最后的答案就是从x出发能够到达的点的个数 首先我们发现一个炸弹可以波及到的范围一定是坐标轴上的一段连续区间 我们可以用二分查找求出炸弹 ...

  2. Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法. 重启服务

    今天用Oracle突然出现Oracle ORA-01033: ORACLE initialization or shutdown in progress. 想起前两天删掉了几个DBF文件,幸好还没有清 ...

  3. 【学习总结】GirlsInAI ML-diary day-21-初识 Numpy, Matplotlib, Seanborn [柱状图、折线图、箱图]

    [学习总结]GirlsInAI ML-diary 总 原博github链接-day21 初识 Numpy, Matplotlib, Seanborn [柱状图.折线图.箱图] 一.Titanic练习赛 ...

  4. Failed to load C:\ProgramFilesTwo\Android\sdk\build-tools\27.0.3\lib\dx.jar

    Eclipse遇到如下错误: Failed to load C:\ProgramFilesTwo\Android\sdk\build-tools\27.0.3\lib\dx.jar 原因: eclip ...

  5. robotframework API 源码阅读笔记----robot.utils.asserts

    http://robot-framework.readthedocs.io/en/latest/autodoc/robot.utils.html#robot.utils.asserts.assert_ ...

  6. Intellij CodeComplete

    code-complete change to ALT + /

  7. neuoj Blurred Pictures(小思维题

    https://oj.neu.edu.cn/problem/1505 题意:一张由n*n的照片,每行从第ai个像素点到第bi个像素点是非模糊点,要求找出最大的正方形,该正方形中的像素都是非模糊点. 思 ...

  8. Android kotlin静态属性、静态方法

    只需要用 companion object 包裹相应代码块即可.以静态属性为例: class Constants { companion object { val BASE_URL = "h ...

  9. java泛型通配符详解

    前言 泛型带来的好处 泛型中通配符 常用的 T,E,K,V,? ?无界通配符 上界通配符 < ? extends E> 下界通配符 < ? super E> ?和 T 的区别 ...

  10. Tomcat 9 安装

    1.下载 官网:https://tomcat.apache.org/ 在浏览器地址栏输入地址,进入下图页面. 点击下图红色标记处(笔者选择的Tomcat 9下载,读者可根据需要自行选择) 下图蓝色标记 ...