第十七周周总结 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 ...
随机推荐
- xmlns, xmlns:xsi, xsi:schemaLocation 解释
xmlns, xmlns:xsi, xsi:schemaLocation 解释 xmlnsxsischemaLocation 我们在写 xml 文件时,尤其是 spring .mybatis 的配置文 ...
- iOS弹窗UIAlertAction用法
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"确认" message:@&quo ...
- js-点击tab按钮,同一页面显示不同的内容
效果: html: JS: css: .tabs-two{ .two{ display: inline-block; font-size:14px; height: 17px; font-weight ...
- 建立PHP的本地调试环境PHP基础教程
对于windows平台而言,PHP供给了一个安装程序,但是这个安装程序是不能直接运行来建立个人服务器平台的,而是必需嵌进现有的服务器平台,如:Windows NT下的IIS或Windows下的PWS, ...
- UNIX环境C - 系统信号
一.信号的概念 信号就是一种软中断,进程与进程之间信号的传递,都是通过内核来当做中转站的,不能直接传递信号. 二.信号的分类(128位信号,不过可用信号就1~64除去32与33) 1.不可靠信号(SI ...
- HY中考游记
回首三年荏苒,还是有许多忘不了,有始有终,最后以一篇游记来记录落幕吧 Day -inf 为了准备中考从机(颓)房回到学校了,停课这么久,也该好好备考了 希望能回到以前的文化课水平QAQ Day -? ...
- 在一个tomcat中配置多个tomcat服务器 111
<Service name="Tomcat_1"> <Connector port="8888" protocol="HTT ...
- 【Python】学习笔记十三:函数的参数对应
位置传递 我们在定义函数时候已经对函数进行了参数传递调用,但是那只是粗浅的位置传递 示例 def sum(a,b,c): d = a+b+c return d print(sum(1,2,3)) 调用 ...
- yii2.0 curd操作数据写法
一.执行原生sql查询,创建yii\db\Command insert(),update(),delete()直接构建,相应的sql语句 查: 1.查询一条 \Yii::$app-&g ...
- ASP.NET中调用百度地图API
1.打开链接http://developer.baidu.com/map/jshome.htm这里有很多DEMO,或者你直接百度搜索“百度地图API”,第一个就是.进入后有很多方向供你选择,由于现在开 ...