第十七周周总结 Swing
考试系统
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的更多相关文章
- java第二周周学习总结
java运算符和循环 java运算符 一.for 语句 for 语句的基本结构如下所示:for(初始化表达式;判断表达式;递增(递减)表达式){ 执行语句; //一段代码} 初始化表达式:初 ...
- web前端笔记整理,从入门到上天,周周更新
由于大前端知识点太多,所以一一做了分类整理,详情可见本人博客 http://www.cnblogs.com/luxiaoyao/ 一.HTML 1.注释 格式:<!-- 注释内容 --> ...
- 牛客算法周周练20 F.紫魔法师 (二分图染色)
题意:给你一张图,对其染色,使得相连的点的颜色两两不同求,最少使用多少种颜色. 题解:首先,若\(n=1\),只需要一种.然后我们再去判断是否是二分图,对于二分图,两种颜色就够了,若不是二分图,也就是 ...
- [问题2014S12] 复旦高等代数II(13级)每周一题(第十二教学周)
[问题2014S12] 设 \(A,B\) 都是 \(n\) 阶半正定实对称阵, 证明: \(AB\) 的所有特征值都是非负实数. 进一步, 若 \(A,B\) 都是正定实对称阵, 证明: \(AB ...
- 201871010132--张潇潇--《面向对象程序设计(java)》第十五周学习总结
博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...
- 201871010133-赵永军《面向对象程序设计(java)》第十五周学习总结
201871010133-赵永军<面向对象程序设计(java)>第十五周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- 201871010135 张玉晶《面向对象程序设计(java)》第十五周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/zyja/p/12000 ...
- 201871010135 张玉晶《面向对象程序设计(java)》第十三周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/zyja/p/11918 ...
- oracle 查询周的第一天日期
项目的开发中需要用到一个查询周的第一天日期的函数 搜索N久很难找到解决的方法 只要自己写一个先用着 代码如下 a_week格式为 'YYYYIW' 如 '200801'表示2008年的第一周 周使用I ...
随机推荐
- DevExpress WPF v19.1新版亮点:Ribbon等控件新功能
行业领先的.NET界面控件DevExpress 日前正式发布v19.1版本,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WPF v19.1中新增的一些控件及部 ...
- create-react-app踩坑记
前言 哇,不的不说这个react 这个脚手架create-react-app脚确实有很多问题,哈哈,下面来看看吧有哪些坑: 引用sass或者less 记得16年还是几年是不支持sass,和less的, ...
- shiro框架学习-4- Shiro内置JdbcRealm
1. JdbcRealm 数据库准备 JdbcRealm就是用户的角色,权限都从数据库中读取,也就是用来进行用户认证授权的安全数据源更换为从数据库中读取,其他没有差别,首先在数据库创建三张表: CR ...
- N皇后问题 --使用位运算解决
关键位运算 x & (-x) 取得最低位1 x & (x-1) 去掉最低位1 class Solution(object): def totalNQueens(self, n): &q ...
- linux-PXE-12
以DHCP+DNS模式管理服务器IP地址和主机名.服务器上架前,以其MAC地址为依据,在DHCP中配置主机保留并分配主机名.DHCP结合TFTP提供的PXE服务,提供PXE引导Linux内核和启动镜像 ...
- 实战build-react(三)
安装 redux-thunk yarn add redux-thunk 或 npm install redux-thunk --save https://github.com/zalmoxisus/r ...
- python实现的ocr接口
太累了,,有时间再补解释 import pytesseract import requests from PIL import Image from PIL import ImageFilter fr ...
- sh_04_累加求和
sh_04_累加求和 # 计算 0 ~ 100 之间所有数字的累计求和结果 # 0. 定义最终结果的变量 result = 0 # 1. 定义一个整数的变量记录循环的次数 i = 0 # 2. 开始循 ...
- express 设置 cookie 以及 httpOnly
权限控制基本 cookie 在 express 中引入 cookie-parser const express = require('express') const cookieParser = re ...
- Java虚拟机JVM详解
一.JVM内存管理 1.1JVM运行时数据区 1.1.1程序计数器:记录当前线程正在执行的字节码指定的地址(行号) 为什么需要它:程序容易被打断 1.1.2虚拟机栈:存储当前线程运行方法时所需要的数据 ...