考试系统

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();
}
}

最新文章

  1. 浅谈对Spring Framework的认识
  2. isKindOfClass,isMemberOfClass
  3. HackerRank "Kitty and Katty"
  4. 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
  5. [转载]Android核心分析
  6. $(document).Ready()方法 VS OnLoad事件 VS $(window).load()方法
  7. 安装WordPress详细教程指南
  8. linux网络编程笔记——TCP
  9. bzoj1485:[HNOI2009]有趣的数列
  10. java基础(十)面向对象(五)
  11. C++ 字符串分割,分割到vector中
  12. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)
  13. 剑指架构师系列-Logstash分布式系统的日志监控
  14. 基于IIS的WCF
  15. 利用 Python_tkinter 完成 2048 游戏
  16. laravel seed填充数据步骤
  17. 生成对抗网络(GAN)
  18. root登陆欢迎界面设置
  19. SpringMVC.入门篇.一.HelloWorld
  20. 刚看完了一本关于javascript的书感觉受益匪浅,原来不懂的东西这么多,想问问怎么成为大神?求教!!!!!!

热门文章

  1. Spring:jar包详解
  2. LOJ-6277-数列分块入门1(分块)
  3. 【ZJOI2009】狼和羊的故事
  4. (转载)自然语言处理中的Attention Model:是什么及为什么
  5. python 输出一个随机数
  6. 2018百度之星B轮 degree
  7. 【模板】【数论】二次剩余Cipolla算法,离散对数BSGS 算法
  8. R 常用代码段
  9. 【转】Python Schema一种优雅的数据验证方式
  10. springboot(二).springboot整合logback用于日志输出