java 记事本 - 实例
记事本
记事本实例中使用了以下知识
1、ui界面
2、io流
3、事件监听
4、图形
5、JFileChooser 类,用于打开文件,另存为文件。弹出文件选择器对话框
学习重点:JFileChooser,有很多方法,参考下面的方法对照表
//记事本
//记事本实例中使用了以下知识
//1、ui界面
//2、io流
//3、事件监听
//4、图形
//5、JFileChooser 类,用于打开文件,另存为文件。弹出文件选择器对话框 import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*; public class Index extends JFrame implements ActionListener{ //设置菜单面板
JMenuBar cdmb;
//设置一级菜单按钮
JMenu cd1,cd2;
//设置二级菜单按钮
JMenuItem cd1_1,cd1_2,cd1_3,cd1_4,cd1_5;
//设置文本域
JTextArea wby;
//设置滚动条
JScrollPane gdt;
//设置欢迎面板
Huanying huanying; public static void main(String[] args) throws Exception{
//实例化当前类
Index index = new Index(); } //自动执行
public Index(){ //设置菜单面板
cdmb = new JMenuBar(); //设置一级菜单按钮名称
cd1 = new JMenu("文件");
cd2 = new JMenu("编辑"); //设置二级菜单按钮名称
cd1_1 = new JMenuItem("新建");
cd1_2 = new JMenuItem("打开");
cd1_3 = new JMenuItem("保存");
cd1_4 = new JMenuItem("另存为");
cd1_5 = new JMenuItem("关闭"); //添加监听事件
cd1_1.addActionListener(this);
cd1_1.setActionCommand("xinjian");
cd1_2.addActionListener(this);
cd1_2.setActionCommand("dakai");
cd1_3.addActionListener(this);
cd1_3.setActionCommand("baocun");
cd1_4.addActionListener(this);
cd1_4.setActionCommand("lingcunwei"); //设置文本域
wby = new JTextArea(); //设置滚动条
gdt = new JScrollPane(wby); //设置欢迎面板
huanying = new Huanying();
huanying.setSize(500, 100); //添加二级菜单到一级菜单
cd1.add(cd1_1);
cd1.add(cd1_2);
cd1.addSeparator(); //添加横线
cd1.add(cd1_3);
cd1.add(cd1_4);
cd1.addSeparator(); //添加横线
cd1.add(cd1_5); //添加一级菜单到菜单面板
cdmb.add(cd1);
cdmb.add(cd2); //添加面板到窗口
this.setJMenuBar(cdmb);
this.add(gdt);
this.add(huanying,BorderLayout.SOUTH); //设置窗口标题
this.setTitle("记事本");
//设置窗口的宽高
this.setSize(500,350);
//添加标题栏图片
this.setIconImage((new ImageIcon("image/1.jpg")).getImage());
//设置窗口出现对于屏幕的位置
this.setLocation(100,100);
//禁止拉大拉小
//this.setResizable(false);
//关闭窗口后释放资源
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//输出窗口
this.setVisible(true); } public void actionPerformed(ActionEvent e){
/**
* 新建文件
*/
if(e.getActionCommand().equals("xinjian")){
System.out.println("新建文件"); } /**
* 打开文件
*/
if(e.getActionCommand().equals("dakai")){
System.out.println("打开文件"); //打开文件的窗口
JFileChooser wjxz = new JFileChooser(); //创建文件窗口的对象
wjxz.setDialogTitle("打开文件"); //设置文件窗口标题
wjxz.showOpenDialog(null); //打开文件窗口风格默认 *******,跟另存为只是这里有区别
wjxz.setVisible(true); //显示文件窗口 //得到用户选择的文件全路径
String wjlj = wjxz.getSelectedFile().getAbsolutePath(); FileReader wjl = null; //文件流
BufferedReader hcl = null; //缓冲流 try{
wjl = new FileReader(wjlj); //文件流方式打开文件
hcl = new BufferedReader(wjl); //缓冲流方式缓冲文件
String s = hcl.readLine(); //读取一行
String content = ""; while(s!=null){
content += (s+"\n");
s = hcl.readLine(); //继续读取一行
}
wby.setText(content); }
catch(Exception aa){ }
finally{
try{
//关闭流,文件
wjl.close();
hcl.close();
}
catch(Exception bb){ }
} } /**
* 另存为文件
*/ if(e.getActionCommand().equals("lingcunwei")){
System.out.println("另存为文件"); //另存为文件的窗口
JFileChooser wjxz = new JFileChooser(); //创建文件窗口的对象
wjxz.setDialogTitle("另存为文件"); //设置文件窗口标题
wjxz.showSaveDialog(null); //另存为文件窗口风格默认
wjxz.setVisible(true); //显示文件窗口 //得到用户选择的文件全路径
String bclj = wjxz.getSelectedFile().getAbsolutePath(); try{
//保存文件
PrintStream pl = new PrintStream(bclj);
System.setOut(pl);
System.out.println(this.wby.getText());
pl.close();
}
catch(Exception aa){ } } } } class Huanying extends JPanel{
public void paint(Graphics g){
//设置颜色
g.setColor(Color.red);
//文字
g.setFont(new Font("宋体",Font.BOLD,10));
g.drawString("您好,欢迎使用记事本软件", 10, 10);
}
}
JFileChooser方法对照表(从手册上复制过来的)
| 方法摘要 | |
|---|---|
boolean |
accept(File f) 如果应该显示该文件,则返回 true。 |
void |
addActionListener(ActionListener l)向文件选择器添加一个 ActionListener。 |
void |
addChoosableFileFilter(FileFilter filter)向用户可选择的文件过滤器列表添加一个过滤器。 |
void |
approveSelection()用户单击 Approve 按钮(默认情况下标有 "Open" 或 "Save")时由 UI 调用此方法。 |
void |
cancelSelection()用户选择 Cancel 按钮时由 UI 调用此方法。 |
void |
changeToParentDirectory()将要设置的目录更改为当前目录的父级。 |
protected JDialog |
createDialog(Component parent)创建并返回包含 this 的新 JDialog,在parent 窗体中的 parent 上居中。 |
void |
ensureFileIsVisible(File f)确保指定的文件是可见的,不是隐藏的。 |
protected |
fireActionPerformed(String command)通知对此事件类型感兴趣的所有侦听器。 |
FileFilter |
getAcceptAllFileFilter()返回 AcceptAll 文件过滤器。 |
AccessibleContext |
getAccessibleContext()获取与此 JFileChooser 关联的 AccessibleContext。 |
JComponent |
getAccessory()返回 accessory 组件。 |
ActionListener[] |
getActionListeners()返回在此文件选择器上注册的所有操作侦听器的数组。 |
int |
getApproveButtonMnemonic()返回确认按钮的助记符。 |
String |
getApproveButtonText()返回 ApproveButton 中的 FileChooserUI内使用的文本。 |
String |
getApproveButtonToolTipText()返回 ApproveButton 中使用的工具提示文本。 |
FileFilter[] |
getChoosableFileFilters()获得用户可选择的文件过滤器列表。 |
boolean |
getControlButtonsAreShown()返回 controlButtonsAreShown 属性的值。 |
File |
getCurrentDirectory()返回当前目录。 |
String |
getDescription(File f)返回文件描述。 |
String |
getDialogTitle()获得 JFileChooser 的标题栏中所显示的字符串。 |
int |
getDialogType()返回此对话框的类型。 |
boolean |
getDragEnabled()获得 dragEnabled 属性的值。 |
FileFilter |
getFileFilter()返回当前选择的文件过滤器。 |
int |
getFileSelectionMode()返回当前的文件选择模式。 |
FileSystemView |
getFileSystemView()返回文件系统视图。 |
FileView |
getFileView()返回当前的文件视图。 |
Icon |
getIcon(File f)返回此文件或文件类型的图标,这取决于系统。 |
String |
getName(File f)返回文件名。 |
File |
getSelectedFile()返回选中的文件。 |
File[] |
getSelectedFiles()如果将文件选择器设置为允许选择多个文件,则返回选中文件的列表。 |
String |
getTypeDescription(File f)返回文件类型。 |
FileChooserUI |
getUI()获得实现此组件 L&F 的 UI 对象。 |
String |
getUIClassID()返回一个指示 L&F 类名的字符串,该类负责呈现此组件。 |
boolean |
isAcceptAllFileFilterUsed()返回是否使用 AcceptAll FileFilter。 |
boolean |
isDirectorySelectionEnabled()方便的调用,可根据当前的文件选择模式确定目录是否为可选择的。 |
boolean |
isFileHidingEnabled()如果在文件选择器中不显示隐藏文件,则返回 true;否则返回 false。 |
boolean |
isFileSelectionEnabled()方便的调用,可根据当前的文件选择模式确定文件是否为可选择的。 |
boolean |
isMultiSelectionEnabled()如果可以选择多个文件,则返回 true。 |
boolean |
isTraversable(File f)如果可以返回该文件(目录),则返回 true。 |
protected String |
paramString()返回此 JFileChooser 的字符串表示形式。 |
void |
removeActionListener(ActionListener l)从文件选择器中移除一个 ActionListener。 |
boolean |
removeChoosableFileFilter(FileFilter f)从用户可选择的文件过滤器列表中移除一个过滤器。 |
void |
rescanCurrentDirectory()通知 UI 重新扫描当前目录的文件列表。 |
void |
resetChoosableFileFilters()将可选择文件过滤器列表重置为其开始状态。 |
void |
setAcceptAllFileFilterUsed(boolean b)确定是否将 AcceptAll FileFilter用作可选择过滤器列表中一个可用选项。 |
void |
setAccessory(JComponent newAccessory)设置 accessory 组件。 |
void |
setApproveButtonMnemonic(char mnemonic)使用字符设置确认按钮的助记符。 |
void |
setApproveButtonMnemonic(int mnemonic)使用数值键代码设置确认按钮的助记符。 |
void |
setApproveButtonText(String approveButtonText)设置 FileChooserUI 中的 ApproveButton内使用的文本。 |
void |
setApproveButtonToolTipText(String toolTipText)设置 ApproveButton 中使用的工具提示文本。 |
void |
setControlButtonsAreShown(boolean b)设置属性,指示在文件选择器中是否显示 approve 和 cancel 按钮。 |
void |
setCurrentDirectory(File dir)设置当前目录。 |
void |
setDialogTitle(String dialogTitle)设置显示在 JFileChooser 窗口标题栏的字符串。 |
void |
setDialogType(int dialogType)设置此对话框的类型。 |
void |
setDragEnabled(boolean b)设置 dragEnabled 属性,要在此组件上启用自动拖动处理(drag 和 drop的第一部分),此属性必须为 true。 |
void |
setFileFilter(FileFilter filter)设置当前文件过滤器。 |
void |
setFileHidingEnabled(boolean b)设置是否实现文件隐藏。 |
void |
setFileSelectionMode(int mode)设置 JFileChooser,以允许用户只选择文件、只选择目录,或者可选择文件和目录。 |
void |
setFileSystemView(FileSystemView fsv)设置为访问和创建文件系统资源(如查找软驱和获得根驱动器列表), JFileChooser所使用的文件系统视图。 |
void |
setFileView(FileView fileView)设置用于检索 UI 信息的文件视图,如表示文件的图标或文件的类型描述。 |
void |
setMultiSelectionEnabled(boolean b)设置文件选择器,以允许选择多个文件。 |
void |
setSelectedFile(File file)设置选中的文件。 |
void |
setSelectedFiles(File[] selectedFiles)如果将文件选择器设置为允许选择多个文件,则设置选中文件的列表。 |
protected |
setup(FileSystemView view)执行公共的构造方法初始化和设置。 |
int |
showDialog(Component parent,弹出具有自定义 approve 按钮的自定义文件选择器对话框。 |
int |
showOpenDialog(Component parent)弹出一个 "Open File" 文件选择器对话框。 |
int |
showSaveDialog(Component parent)弹出一个 "Save File" 文件选择器对话框。 |
void |
updateUI()将 UI 属性重置为当前的外观值。 |
java 记事本 - 实例的更多相关文章
- JAVA RMI 实例
下面我将介绍一个完整的实例,让初学者能快速体验RMI的功用. 分为以下四个步骤 1. 创建远程接口及声明远程方法(HelloInterface.java)2. 实现远程接口及远程方法(继承Unicas ...
- Java多线程-实例解析
Java多线程实例 3种实现方法Java中的多线程有三种实现方式:1.继承Thread类,重写run方法.Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯 ...
- Thrift入门初探--thrift安装及java入门实例
什么是thrift? 简单来说,是Facebook公布的一款开源跨语言的RPC框架. 那么问题来了. 什么是RPC框架? RPC全称为Remote Procedure Call,意为远程过程调用. 假 ...
- [Java初探实例篇02]__流程控制语句知识相关的实例练习
本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...
- 【thrift】thrift入门初探--thrift安装及java入门实例
转载:https://www.cnblogs.com/fingerboy/p/6424248.html 公司的一些平台服务框架底层封装了thrift提供服务,最近项目不是很紧,于是研究了一下,刚刚入门 ...
- Redis缓存Mysql模拟用户登录Java实现实例[www]
Redis缓存Mysql模拟用户登录Java实现实例 https://jingyan.baidu.com/article/09ea3ede1dd0f0c0aede3938.html redis+mys ...
- JAVA记事本的图形用户界面应用程序含过滤
JAVA记事本的图形用户界面应用程序 过滤 题目简介: 整体分析: 实验代码: package note; import java.awt.EventQueue; import java.awt.ev ...
- JAVA记事本的图形用户界面应用程序含加密
JAVA记事本的图形用户界面应用程序 加密 题目简介: 整体分析: 实验代码: import java.awt.EventQueue; import java.awt.event.ActionEven ...
- JAVA记事本的图形用户界面应用程序
JAVA记事本的图形用户界面应用程序 整体分析: 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import ...
随机推荐
- ASP.NET MVC中多种ActionResult用法总结
最近一段时间做了个ASP.NET MVC4.0的项目,项目马上就要结束了,今天忙里偷闲简单总结一下心得: 1. 如果Action需要有返回值的话,必须是ActionResult的话,可以返回一个Emp ...
- Java方法调用中的别名处理
将一个对象传递到方法内部时,也会产生别名现象.//: PassObject.java// Passing objects to methods can be a bit tricky62class L ...
- 由于OCR文件损坏造成Oracle RAC不能启动的现象和处理方法
v$cluster_interconnects 集群节点间通信使用的IP地址 错误信息 使用了公网进行连接 SQL> select * from v$cluster_interconnects; ...
- Android技术积累:开发规范
转载自Keegan小钢 http://keeganlee.me/post/android/20150709 书写规范 1. 编码方式统一用UTF-8. Android Studio默认已是UTF-8, ...
- 网页闯关游戏(riddle webgame)--H5刮刮卡的原理和实践
前言: 之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识. 对于刮刮卡, 想必大家都很熟悉, 也很喜 ...
- github最简单的操作方法
其实,说实话,到目前为止,我还没有研究透那些gitbush上面的命令,所以,往github上面上传自己的文件,我采用最简单的操作方式.嘻嘻.下面,将为大家讲述一下. 首先,要在github上面注册新用 ...
- javascript设计模式之观察者模式
观察者模式又称发布/订阅模式 publish/subscribe 它是一种一对多的关系,让多个观察者对象同时监听某一主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得他们能够自动 ...
- iOS 动画
图层树.寄宿图以及图层几何学(一)图层的树状结构 技术交流新QQ群:414971585 巨妖有图层,洋葱也有图层,你有吗?我们都有图层 -- 史莱克 Core Animation其实是一个令人误解的命 ...
- python之列表常见操作
list = [1,2,3,4,5,6,7,8,9,0,0,0,0,0] listSet = list.set(list)#将列表中的数据进行去重处理 此时listSet中的数据为[1,2,3,4,5 ...
- 集成Visual Studio/MSBuild的开发/发布流程和 FIS3
谁不想让自己的网站速度更快?为此需要多方面的优化,但优化又会增加开发工作量.Fis3 是很不错的前端优化工具,能够让前端的优化变得自动方便,解决前述问题.Fis3是百度开发的,开源的,在国内比较六流行 ...