第十三周学习总结&实验报告(八)
图像界面
件处理及监听处理
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. 本周四理论课 ...
随机推荐
- 1、引言(Introduction)
1.1 欢迎 在生活中用到的机器学习算法: (1)打开谷歌.必应搜索到你需要的内容,正是因为他们有良好的学习算法 (2)每次您阅读您的电子邮件垃圾邮件筛选器,可以帮你过滤大量的垃圾邮件 机器学习为什么 ...
- 【Linux】php7.2.8 + xdebug + composer + php代码覆盖率 + jenkins配置 (实操记录,亲测可用)
[一.linux安装php 7.2.8] 1.wget http://nginx.org/download/nginx-1.9.9.tar.gz # nginx可不安 ...
- python学习第十天列表的增加,修改,删除操作方法
在一个有序的数据列表中,集各种数据类型,可以向列表增加元素,也可以修改列表里面的元素,可以删除列表的里面元素,append(),insert(),remove(),pop(),和全局DEL 删除等. ...
- http响应代码解释
200:成功响应 302:找到,但是请求的资源在另外一个不同的url中. 400:错误请求.这个请求不能被服务器所理解,客户端必须修改请求. 401:未认证,这个请求需要用户认证. 404:未找到.服 ...
- eclipse 设置注释模板
window->preference->java->code styple->code template->Comments Types /** * @author $ ...
- k8s阅读笔记2-k8s架构
前言 阅读地址 https://rootsongjc.gitbooks.io/kubernetes-handbook/content/concepts/ 架构 架构图说明: master 指服务端 1 ...
- mangodb语句
{ field: { $exists: <boolean> } }
- IText PDF简单示例
package com.exe.learn.demo.itextpdf; import java.io.ByteArrayInputStream; import java.io.File; impor ...
- BigDecimal 算数
BigDecimal big=new BigDecimal("22.233"); BigDecimal big1=new BigDecimal("12.233" ...
- 刷题or源码链接
Hadoop权威指南的Github https://github.com/tomwhite/hadoop-book hadoopAPI http://hadoop.apache.org/docs/cu ...