考试系统

1.登录功能 用户和密码存在在哪里? 文件

2.考试功能 考试题目和答案存在哪? 文件

3.展示功能 GUI Graphical User Interface图形用户接口

#GUI

Java集合 String

I/O

文件

c--->桌面应用程序

c/s--->client Server 客户端/服务器 QQ

*B/S-->Browser Server 浏览器/服务器 淘宝

   GUI
Graphical User Interface
图形用户接口
就是采用图形的方式,进行操作页面的展示
AWT (Abstract Window toolkit)
Swing 摆动,悬挂的意思
AWT Swing
窗体 Frame JFrame
面板 Panel JPanel
组件 Button JButton 按钮
Label JLabel 标签
TextField JTextField 文本框
PasswordField 密码框 TextArea JTexArea 文本域
JMenuBar 菜单条 JMenu 菜单 JMenuItem 菜单项
事件 ActionListener 动作/响应事件
KeyListener 键盘事件

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.*;
import javax.swing.*; public class Bz implements ActionListener {//ActionListener用于接收操作事件的侦听器接口
JFrame frame; //窗体
JMenuBar bar; //菜单条
JMenu fileMenu, editMenu; //菜单
JMenuItem newItem, openItem, saveItem, saveasItem, closeItem; //菜单项
ImageIcon newIcon, openIcon, saveIcon, saveasIcon, closeIcon;//图标
JScrollPane scroll; //滚动条
JTextArea area; //文本域
JFileChooser chooser; //文件选择器
File file; //与电脑上的文件或文件夹产生一 一对应的的映射关系 public Bz() {
frame = new JFrame("记事本"); //创建“记事本”窗体
bar = new JMenuBar(); //创建菜单条
fileMenu = new JMenu("文件"); //创建“文件”菜单
editMenu = new JMenu("编辑"); //创建“编辑”菜单
newIcon = new ImageIcon("f:" + File.separator + "tupian" + File.separator + "1.png");//添加图标
openIcon = new ImageIcon("f:" + File.separator + "tupian" + File.separator + "2.png");
saveIcon = new ImageIcon("f:" + File.separator + "tupian" + File.separator + "3.png");
saveasIcon = new ImageIcon("f:" + File.separator + "tupian" + File.separator + "4.png");
closeIcon = new ImageIcon("f:" + File.separator + "tupian" + File.separator + "5.png");
newItem = new JMenuItem("新建(N)", newIcon); //创建“新建”菜单项
openItem = new JMenuItem("打开(O)", openIcon); //创建“打开”菜单项
saveItem = new JMenuItem("保存(S)", saveIcon); //创建“保存”菜单项
saveasItem = new JMenuItem("另存为(A)", saveasIcon); //创建“另存为”菜单项
closeItem = new JMenuItem("关闭(X)", closeIcon); //创建“关闭”菜单项
area = new JTextArea(); //创建文本域
scroll = new JScrollPane(area); //创建滚动条 newItem.setMnemonic(KeyEvent.VK_N); //设置组合键ctrl
openItem.setMnemonic(KeyEvent.VK_O);
saveItem.setMnemonic(KeyEvent.VK_S);
saveasItem.setMnemonic(KeyEvent.VK_A);
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_S, InputEvent.CTRL_DOWN_MASK));
saveasItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, 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(saveasItem); //将“另存为”菜单项加入“文件”菜单
fileMenu.addSeparator(); //将“文件”菜单添加到窗口
fileMenu.add(closeItem); //将“关闭”菜单项加入“文件”菜单 newItem.addActionListener(this); //观察者模式,接收到指令就开始执行方法
openItem.addActionListener(this);
saveItem.addActionListener(this);
saveasItem.addActionListener(this);
closeItem.addActionListener(this); bar.add(fileMenu); //将“文件”菜单加入到菜单条
bar.add(editMenu); //将“编辑”菜单加入到菜单条 frame.setJMenuBar(bar); //将菜单条添加到窗口上
frame.add(scroll); //将滚动条加入到窗体
frame.setSize(600, 450);//设置窗体出现时的位置和自身的宽高
frame.setVisible(true); //设置点击关闭按钮 窗体执行完毕 }
//绑定事件监听器
public void actionPerformed(ActionEvent event){ Object obj=event.getSource();//接收的指令
if(obj instanceof JMenuItem) {
JMenuItem item=(JMenuItem) obj;//(强制向下转型)如果点击的是菜单条
if(item == newItem) {
new Bz();//新建
}else if(item == 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) { e.printStackTrace();
}
}else if(item == saveItem) {//保存
if(file!=null) {
try {
PrintStream out = new PrintStream(new FileOutputStream(file));
out.print(this.area.getText());
out.close();
} catch (FileNotFoundException e) { e.printStackTrace();
}
} }else if(item == saveasItem) {//另存为
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 (IOException e) {
e.printStackTrace();
}
}else if(item == closeItem) {
System.exit(1);
}
}
} public static void main(String[] args) {
new Bz();
}
}

第十七周周总结 Swing的更多相关文章

  1. java第二周周学习总结

    java运算符和循环 java运算符 一.for 语句 for 语句的基本结构如下所示:for(初始化表达式;判断表达式;递增(递减)表达式){    执行语句;   //一段代码} 初始化表达式:初 ...

  2. web前端笔记整理,从入门到上天,周周更新

    由于大前端知识点太多,所以一一做了分类整理,详情可见本人博客 http://www.cnblogs.com/luxiaoyao/ 一.HTML 1.注释 格式:<!-- 注释内容 --> ...

  3. 牛客算法周周练20 F.紫魔法师 (二分图染色)

    题意:给你一张图,对其染色,使得相连的点的颜色两两不同求,最少使用多少种颜色. 题解:首先,若\(n=1\),只需要一种.然后我们再去判断是否是二分图,对于二分图,两种颜色就够了,若不是二分图,也就是 ...

  4. [问题2014S12] 复旦高等代数II(13级)每周一题(第十二教学周)

    [问题2014S12]  设 \(A,B\) 都是 \(n\) 阶半正定实对称阵, 证明: \(AB\) 的所有特征值都是非负实数. 进一步, 若 \(A,B\) 都是正定实对称阵, 证明: \(AB ...

  5. 201871010132--张潇潇--《面向对象程序设计(java)》第十五周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  6. 201871010133-赵永军《面向对象程序设计(java)》第十五周学习总结

    201871010133-赵永军<面向对象程序设计(java)>第十五周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  7. 201871010135 张玉晶《面向对象程序设计(java)》第十五周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/zyja/p/12000 ...

  8. 201871010135 张玉晶《面向对象程序设计(java)》第十三周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/zyja/p/11918 ...

  9. oracle 查询周的第一天日期

    项目的开发中需要用到一个查询周的第一天日期的函数 搜索N久很难找到解决的方法 只要自己写一个先用着 代码如下 a_week格式为 'YYYYIW' 如 '200801'表示2008年的第一周 周使用I ...

随机推荐

  1. 基于 maven 实现跨平台编译 protobuf 文件

    基于 maven 实现跨平台编译 protobuf 文件 mavne protobuf .proto  跨平台  需求 在团队协作中使用 protobuf 时, 有以下几点需求: protoc 跨平台 ...

  2. 《SaltStack技术入门与实践》—— 实践案例 <中小型Web架构>3 Memcached配置管理

    实践案例 <中小型Web架构>3 Memcached配置管理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Memcached介绍 Me ...

  3. 51 Nod 1678 lyk与gcd(容斥原理)

    1678 lyk与gcd  基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 这天,lyk又和gcd杠上了. 它拥有一个n个数的数列,它想实现两种操作 ...

  4. Spring Cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

    上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * ...

  5. mysqli使用localhost问题

    <?php $mysqli = new mysqli('localhost', 'root', '123456', 'mysql'); if ($mysqli->connect_error ...

  6. crontab定时调度shell脚本

    本人最近要用crontab做一个定时调度任务,调一个启动脚本去执行jar包,并给main方法传一个日期参数. Linux系统:CentOS7 输入: crontab -e 在里面编写: SHELL=/ ...

  7. oracle 11g安装教程终结版

    1.解压文件 2.双击 “setup.exe” 3.高级安装.下一步 4.企业版  下一步 5.下一步 6.只要不报错,警告没事.(路径如果报错的话,没事,直接继续) 注意:如果有需要6.2版本的错误 ...

  8. SpringMvc中@ModelAttribute的运用

    /** * 1. 有 @ModelAttribute 标记的方法, 会在每个目标方法执行之前被 SpringMVC 调用! * 2. @ModelAttribute 注解也可以来修饰目标方法 POJO ...

  9. 洛谷 P3865 ST表

    ST表 ST表的功能很简单 它是解决RMQ问题(区间最值问题)的一种强有力的工具 它可以做到O(nlogn)预处理,O(1)查询最值 是一种处理静态区间可重复计算问题的数据结构,一般也就求求最大最小值 ...

  10. node服务通过Jenkins上线流程

    构建流程 构建服务器: 拉取指定分支代码 构建服务器: 安装依赖 构建服务器: 执行构建 构建服务器: 如果上线流程,则在 git 上创建 tag,供回滚使用 构建服务器:打包 node 服务代码,和 ...