第十三周学习总结&实验报告(八)
图像界面
件处理及监听处理
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();
}
}
程序运行截图:
总结:这只是一个最基本的记事本,结合老师上课所讲的,很容易实现简单操作。学到了一些监视器的运用。要想开发功能更全面的记事本还需要加倍努力学习相关知识。
第十三周学习总结&实验报告(八)的更多相关文章
- 第五周学习总结&实验报告(三)
第五周学习总结&实验报告(三) 这一周又学习了新的知识点--继承. 一.继承的基本概念是: *定义一个类,在接下来所定义的类里面如果定义的属性与第一个类里面所拥有的属性一样,那么我们在此就不需 ...
- 第八周学习总结&实验报告(6)
实验六 异常 一.实验目的: (1)理解异常的基本概念: (2)掌握异常处理方法及熟悉常见异常的捕获方法. 二.实验要求: (1)练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使 ...
- 第五周学习总结&实验报告三
第五周课程总结 1.this和super的区别: this:访问本类中的属性,如果本类没有此属性则从父类中继续查找:访问本类中的方法,如果本类中没有此方法则从父类中继续查找:调用本类构造,必须放在构造 ...
- 第九周学习总结&实验报告七
实验报告: 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验 ...
- 第八周学习总结&实验报告六
实验总结 :类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 : 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异 ...
- 第九周学习总结&实验报告(7)
完成火车站售票程序的模拟. 要求: (1)总票数1000张; (2)10个窗口同时开始卖票; (3) 卖票过程延时1秒钟; (4)不能出现一票多卖或卖出负数号票的情 况 实验代码: package y ...
- 第六周学习总结&实验报告四
一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...
- 201871010111-刘佳华《面向对象程序设计(java)》第十三周学习总结
201871010111-刘佳华<面向对象程序设计(java)>第十三周学习总结 实验十一 图形界面事件处理技术 实验时间 2019-11-22 第一部分:理论知识总结 1.事件源:能够产 ...
- “2017面向对象程序设计(Java)第十三周学习总结”存在问题的反馈及本周教学安排
“2017面向对象程序设计(Java)第十三周学习总结”存在问题的反馈及本周教学安排1. 图形界面事件处理技术是Java GUI编程核心技术,要求同学们掌握其基本原理和基本编程模型:2. 本周四理论课 ...
随机推荐
- js实现方块弹珠游戏
下载地址:https://files.cnblogs.com/files/liumaowu/%E5%BC%B9%E4%B8%80%E5%BC%B9%E6%89%93%E6%96%B9%E5%9D%97 ...
- UVALive 6270 Edge Case(找规律,大数相加)
版权声明:本文为博主原创文章,未经博主同意不得转载. vasttian https://blog.csdn.net/u012860063/article/details/36905379 转载请注明出 ...
- 图例演示在Linux上快速安装软RAID的详细步骤
物理环境:虚拟机centos6.4 配置:8G内存.2*2核cpu.3块虚拟硬盘(sda,sdb,sdc,sdb和sdc是完全一样的) 在实际生产环境中,系统硬盘与数据库和应用是分开的, ...
- vue 防抖节流函数——组件封装
防抖(debounce) 所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间. 节流(throttle) 所谓节流,就是指连续触发事件但是在 ...
- JS面向对象——工厂模型
工厂模型抽象了创建具体对象的过程,以下示例代码说明工厂类型: <!DOCTYPE html> <html> <head> <title>工厂模型< ...
- js代码检测设备问题:为什么在移动端检测设备的时候会出现pc的页面
为了在手机上也能正常显示页面,所以为之前写的页面又重写了一遍,专门用来在移动端显示,用js代码检测设备,如果是pc就显示pc的页面,如果是移动就显示移动的页面,但遇到一个问题就是在移动端打开会有一个延 ...
- Jenkins ant打包部署
选择项目 自由风格
- 【串线篇】Mybatis缓存之缓存查询顺序
1. 不会出现一级缓存和二级缓存中有同一个数据.因为二级缓存是在一级缓存关闭之后才有的 2.任何时候都是先看二级缓存.再看一级缓存,如果大家都没有就去查询数据库,数据库的查询后的结果放在一级缓存中了: ...
- python3访问MySQL数据库
import pymysql db = pymysql.connect( host='XXXXXXXX.com', #数据库服务器地址 user='XXX', #用户名 passwd='XXX', d ...
- kali网络源配置
使用vim对sources.list文件进行修改: $ vim /etc/apt/sources.list 随便挑选一个源添加到该文件中 ----------------------------- ...