看了看上一篇博客的时间,已经是15天之前了,两个星期。
这两周的生活:每天十节课,周末也满课,大晚上的还要敲代码补作业补报告,心里想着马上要考的专业课还只看完绪论,整个人就不好了。
想着之前看过的一句话:选我所爱不如爱我所选也还是会纯粹的以为只要坚持下去总是没错的,付出一定会有收获吧,那些什么个 现在流的汗都是当初选专业脑子进的水 神马的都一边去把!!!
所以我愉快的决定在考试之前多听听新一代神曲: 小苹果! Yeah(这里请自动脑补 哈哈~)
好啦,这么忙碌还是得补课赶进度呀。
我的第三节课讲的是swing体系:Java中用来做UI的一套API
java.awt
javax.swing
常用到的有:
JFrame:窗体
JPanel:面板
JLabel:文本标签和图片标签
JTextField:文本输入框
JPasswordField:密码输入框
JButton:按钮
JComboBox:下拉框
JCkeckBox:多选框
JRadioButton:单选按钮
JTextArea:多行文本框
JMenuBar
JMenu
JMenuItem
事件:对于组件的任何一个操作:点击按钮,选中菜单项 鼠标移动,鼠标按下,键盘输入...
事件监听器:用来监听在某个组件上是否发生了对应的事件
事件源:发生事件的组件对象
常用的事件监听器:(接口)
动作监听器:ActionListener
鼠标按键监听器:MouseListener
鼠标移动监听器:MouseMotionListener
鼠标滚轮监听器:MouseWheelListener
键盘监听器:KeyListener
FileInputStream
FileOutputStream
我们要掌握:
1.如何定义事件监听器
2.如何区分每个菜单项
3,如何给菜单项绑定监听器
4.如何将UI中的对象传递给监听器
5,如何读写硬盘中的数据
为此,我们做了个简单的山寨记事本
下面贴上代码
- import javax.swing.JFrame;
- import javax.swing.JMenu;
- import javax.swing.JMenuBar;
- import javax.swing.JMenuItem;
- import javax.swing.JScrollPane;
- import javax.swing.JTextArea;
- import javax.swing.ScrollPaneConstants;
- public class NotePadUI {
- public static void main(String args[]) {
- // 创建界面
- JFrame jf = new JFrame();
- // 设置标题
- jf.setTitle("记事本");
- // 设置初始大小
- jf.setSize(400, 300);
- // 设置点击关闭按钮的时候退出程序
- jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- // 创建多行文本框
- JTextArea area = new JTextArea();
- // 添加菜单栏
- JMenuBar bar = new JMenuBar();
- // 创建事件监听器对象
- NotePadListenet lis = new NotePadListenet(area);
- String[] menus = { "文件(F)", "编辑(E)", "格式(O)", "查看(V)", "帮助(H)" };
- String[][] items = {
- { "新建", "打开", "保存", "另存为", "-", "页面设置", "打印", "-", "退出" },
- { "撤销", "-", "剪切", "复制" }, {}, {}, {} };
- // 每个菜单项的唯一标识
- String[][] commands = {
- { "newFile", "open", "save", "saveAs", "-", "pageSet", "print",
- "-", "exit" }, { "withDraw", "-", "cut", "copy" }, {},
- {}, {} };
- // 循环创建JMenu,放在JMenuBar上
- for (int i = 0; i < menus.length; i++) {
- JMenu menu = new JMenu(menus[i]);
- bar.add(menu);
- for (int j = 0; j < items[i].length; j++) {
- if (items[i][j].equals("-")) {
- // 就加入分隔条
- menu.addSeparator();
- } else {
- JMenuItem item = new JMenuItem(items[i][j]);
- // 设置菜单项的唯一标识(动作命令)
- item.setActionCommand(commands[i][j]);
- // 将菜单项加载对应的菜单上
- menu.add(item);
- // 给菜单项绑定监听器
- item.addActionListener(lis);
- }
- }
- }
- // 设置窗体的菜单
- jf.setJMenuBar(bar);
- // 滚动面板,将多行文本框放到滚动面板面板中
- JScrollPane sp = new JScrollPane(area);
- // 设置一直显示滚动条
- sp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
- sp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
- jf.add(sp);
- jf.setVisible(true);
- }
- }
监听:
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import javax.swing.JTextArea;
- public class NotePadListenet implements ActionListener {
- private JTextArea area;
- public NotePadListenet(JTextArea area) {
- this.area = area;
- }
- public void actionPerformed(ActionEvent e) {
- // 获得被选中菜单项的动作命令
- String command = e.getActionCommand();
- if (command.equals("save")) {
- // 获取多行文本框中的数据
- // 得到文本内容
- String str = area.getText();
- String path = "F:\\abc\\a.txt";
- try {
- FileOutputStream fos = new FileOutputStream(path);
- byte[] bs = str.getBytes();
- fos.write(bs);
- fos.flush();
- fos.close();
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- } else if (command.equals("open")) {
- String path1 = "G:\\qiyi\\b.txt";
- try {
- FileInputStream fis = new FileInputStream(path1);
- //流的长度
- int len = fis.available();
- byte[] bs = new byte[len];//流中有多少字节,就定义多大数组
- //将流中的字节读入数组
- fis.read(bs);
- //将字节数组转成字符串
- String msg = new String(bs);
- area.setText(msg);
- } catch (Exception ef) {
- ef.printStackTrace();
- }
- }
- }
- }
有一个缺点,暂时只能指定路径保存 如上面的代码我保存的是保存到了F盘, 还没有实现自己选择位置的功能。有待慢慢完善。
还有一个疑惑:
在记事本里面换行之后去我保存的路径查看发现并没有换行。 但是用写字板打开的话又是有换行的,不明所以。 >< >< ><
最后让我一边唱着小苹果 一边继续补我学校的作业去吧,今晚又是熬夜的节奏。
我的黑眼圈,想说爱你不容易 o(︶︿︶)o
晚安 ITEyers 。
3 3 3
相关推荐
标题《R菜鸟入门》所涉及的知识点涵盖了R语言的基础入门、学习R的重要性以及实际应用。R语言是一种用于统计分析、图形表示以及数据挖掘的编程语言,广泛应用于科学研究和数据分析领域。 描述部分告诉我们作者dapeng...
《MATLAB编程(第二版)-菜鸟入门教材》这本书旨在帮助初学者快速掌握MATLAB的基础知识和实际应用技巧。 在本书中,读者将了解到以下关键知识点: 1. **MATLAB简介**:了解MATLAB的历史、应用领域以及它与其他编程...
本资料为本人学习matlab编程(第二版)-菜鸟入门教材时对其课后习题(1-4章)所编的程序,以及书本上的源程序。适用于才开始学习matlab编程
以下是一些关于Linux菜鸟入门级命令的详细说明,旨在帮助新手快速熟悉这个强大的操作系统。 1. **ls**:用于列出目录中的文件和子目录。通过`ls -l`可以显示详细信息,包括权限、所有者、大小等。 2. **cd**:改变...
jmeter 入门到进阶系列教程 jmeter 是一款优秀的开源性能测试工具,目前最新版本为 3.0 版本。它具有多种优点,如高可扩展性、精心简单的 GUI 设计、完全的可移植性和 100%纯 Java 等。jmeter 的安装非常简单,只...
资源名称:qt菜鸟入门到精通内容简介: qt菜鸟入门到精通,是一套针对qt爱好者而总结积累的学习经验和学习知识,它的主要作用是将现今用到的各种qt编写的程序进行集合,然后把知识点融汇在实战练习中,来达到速成...
本文是我为大家分享的区块链技术文章系列中的第一部分【区块链之菜鸟入门】的第一篇,这篇文章咱们先抛开技术细节,用漫画的形式撩开神秘面纱,和大家聊一聊到底区块链是什么。
因此,一套全面而系统的入门教材,成为菜鸟们踏进这个大门的钥匙。 “很全面的菜鸟入门教材”应运而生,它不仅名称直接,更在内容上力求覆盖IT领域的基础知识以及部分进阶技能,旨在为初学者提供一个完整的知识体系...
FSM初学者教程 FSM编程-菜鸟入门(清晰版)
JAVA菜鸟级入门教程
《谁说菜鸟不会数据分析(入门篇)第四版》是一本专为初学者设计的数据分析教程,旨在帮助新手快速掌握数据分析的基础知识。这本书可能包含了Excel在数据处理、分析和可视化方面的应用,因为“excle”标签暗示了内容...
LINUX教程书籍,菜鸟入门宝典 LINUX教程书籍,菜鸟入门宝典 LINUX教程书籍,菜鸟入门宝典
3dmax 菜鸟入门教程 这是part2的资料
本教程专为初学者设计,旨在帮助“菜鸟”快速掌握Spring的基本概念和实战技巧。 在Spring入门阶段,首先要理解的是依赖注入(DI)。DI是一种设计模式,它允许我们解耦组件,让它们之间通过接口而非具体的实现进行...
本书把MATLAB 当作一种技术编程语言来教,向学生展示如何编写简洁高效,有充分根据的程序。本书不主张把MATLAB 数以百计的函数全部介绍给大家,而是教给学生怎样使用MATLAB 语言,以及如何使用网上在线工具去加载你...
《MATLAB编程(第二版)》是一本专为初学者设计的入门教材,旨在帮助那些对MATLAB感兴趣的读者快速掌握这一强大的科学计算工具。MATLAB(Matrix Laboratory)是一种交互式的编程环境,它集数值分析、矩阵计算、信号...