package com.txt;
import java.awt.*;
import java.io.*;
import java.awt.event.*;import javax.swing.*;public class NotPad extends JFrame implements ActionListener
{
//定义需要的SWING组件
JTextArea jta=null;
//定义菜单条
JMenuBar jmb=null;
//定义第一级JMenu
JMenu jm1=null;
//定义二级JMenuItem
JMenuItem jmi1=null;
JMenuItem jmi2=null;
public static void main(String[] args)
{
NotPad np=new NotPad();
}
//构造函数(初始化任务)
public NotPad()
{
//创建JTA
jta=new JTextArea();
//创建菜单条
jmb=new JMenuBar();
//创建一级JMenu
jm1=new JMenu("文件");
//设置助记符
jm1.setMnemonic('F');
//创建二级JMenuItem
jmi1=new JMenuItem("打开(0)",new ImageIcon("open.jpg"));
//注册监听
jmi1.addActionListener(this);
jmi1.setActionCommand("open");
jmi2=new JMenuItem("保存(s)");
//注册监听
jmi2.addActionListener(this);
jmi2.setActionCommand("save");
//放入到JFrame
this.add(jta); //默认正中全占 BORDER布局
//加入 Jta
this.setJMenuBar(jmb);
//把JMenu加入 JMenuBar 一级
jmb.add(jm1);
//把JMenuItem放入JMenu
jm1.add(jmi1);
jm1.add(jmi2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭就退出
this.setSize(400,300);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
//判断是那个菜单被选中
if(e.getActionCommand().equals("open"))
{
//System.out.println("open");
//JFileChooser
//创建一个文件选择(组件)对象
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle("请选择文件...");
//默认方式
jfc1.showOpenDialog(null);
//显示
jfc1.setVisible(true);
//得到用户选择的文件全路径
String filename=jfc1.getSelectedFile().getAbsolutePath();
//System.out.println(filename);
FileReader fr=null;
BufferedReader br=null;
try
{
fr=new FileReader(filename) ;
br=new BufferedReader(fr);
//从文件中读取信息并显示到ita
String s="";
String allCon="";
while ((s=br.readLine())!=null)
{
allCon+=s+"\r\n";
}
//放到JTA
jta.setText(allCon);
} catch (Exception e2)
{
// TODO: handle exception
e2.printStackTrace();
}
finally
{
try {
br.close();
fr.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
else if (e.getActionCommand().equals("save"))
{
//出现保存对话框
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("另存为...");
//默认方式显示
jfc.showSaveDialog(null);
jfc.setVisible(true);
//得到用户希望把文件保存到何处,文件全路径
String file=jfc.getSelectedFile().getAbsolutePath();
//准备写入到指定文件
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(file);
bw=new BufferedWriter(fw);
bw.write(this.jta.getText()); //优化用字符串数组
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
finally
{
try {
fw.close();
bw.close();
} catch (Exception e3) {
// TODO: handle exception
e3.printStackTrace();
}
}
}
}}
import java.awt.*;
import java.io.*;
import java.awt.event.*;import javax.swing.*;public class NotPad extends JFrame implements ActionListener
{
//定义需要的SWING组件
JTextArea jta=null;
//定义菜单条
JMenuBar jmb=null;
//定义第一级JMenu
JMenu jm1=null;
//定义二级JMenuItem
JMenuItem jmi1=null;
JMenuItem jmi2=null;
public static void main(String[] args)
{
NotPad np=new NotPad();
}
//构造函数(初始化任务)
public NotPad()
{
//创建JTA
jta=new JTextArea();
//创建菜单条
jmb=new JMenuBar();
//创建一级JMenu
jm1=new JMenu("文件");
//设置助记符
jm1.setMnemonic('F');
//创建二级JMenuItem
jmi1=new JMenuItem("打开(0)",new ImageIcon("open.jpg"));
//注册监听
jmi1.addActionListener(this);
jmi1.setActionCommand("open");
jmi2=new JMenuItem("保存(s)");
//注册监听
jmi2.addActionListener(this);
jmi2.setActionCommand("save");
//放入到JFrame
this.add(jta); //默认正中全占 BORDER布局
//加入 Jta
this.setJMenuBar(jmb);
//把JMenu加入 JMenuBar 一级
jmb.add(jm1);
//把JMenuItem放入JMenu
jm1.add(jmi1);
jm1.add(jmi2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭就退出
this.setSize(400,300);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
//判断是那个菜单被选中
if(e.getActionCommand().equals("open"))
{
//System.out.println("open");
//JFileChooser
//创建一个文件选择(组件)对象
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle("请选择文件...");
//默认方式
jfc1.showOpenDialog(null);
//显示
jfc1.setVisible(true);
//得到用户选择的文件全路径
String filename=jfc1.getSelectedFile().getAbsolutePath();
//System.out.println(filename);
FileReader fr=null;
BufferedReader br=null;
try
{
fr=new FileReader(filename) ;
br=new BufferedReader(fr);
//从文件中读取信息并显示到ita
String s="";
String allCon="";
while ((s=br.readLine())!=null)
{
allCon+=s+"\r\n";
}
//放到JTA
jta.setText(allCon);
} catch (Exception e2)
{
// TODO: handle exception
e2.printStackTrace();
}
finally
{
try {
br.close();
fr.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
else if (e.getActionCommand().equals("save"))
{
//出现保存对话框
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("另存为...");
//默认方式显示
jfc.showSaveDialog(null);
jfc.setVisible(true);
//得到用户希望把文件保存到何处,文件全路径
String file=jfc.getSelectedFile().getAbsolutePath();
//准备写入到指定文件
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(file);
bw=new BufferedWriter(fw);
bw.write(this.jta.getText()); //优化用字符串数组
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
finally
{
try {
fw.close();
bw.close();
} catch (Exception e3) {
// TODO: handle exception
e3.printStackTrace();
}
}
}
}}
解决方案 »
- 有cognos方面的api吗?
- 大家帮忙看一下这个程序!
- 为什么echo $JAVA_HOME的值和System.getProperty()的java.home值不一样呢 ?
- 关于 checkbox 的 checked 的问题
- java里面的font字体类型,我们非要自己来做封装吗?
- [注意]Java 连接数据库的安全性问题之思考
- 两个问题,1。Boolean中的getBoolean(String name)我的参数不管是什么,返回的都是false,2,jcheckbox里我setSelect(true),以后setSelct(
- 新手问:APPLETVIEWER可以直接运行JAVA文件吗
- 关于组件(初学者,请大家帮忙)
- 转码在jsp页面中文全为问号 求大神帮忙
- cs流程
- 包的问题
你这个软件还有其他的问题,不过现在是能正常保存文件了
import java.awt.*;
import java.io.*;
import java.awt.event.*;import javax.swing.*;public class NotePad extends JFrame implements ActionListener
{
//定义需要的SWING组件
JTextArea jta=null; //定义菜单条
JMenuBar jmb=null; //定义第一级JMenu
JMenu jm1=null; //定义二级JMenuItem
JMenuItem jmi1=null;
JMenuItem jmi2=null;
public static void main(String[] args)
{
NotePad np=new NotePad();
}
//构造函数(初始化任务)
public NotePad()
{
//创建JTA
jta=new JTextArea();
//创建菜单条
jmb=new JMenuBar();
//创建一级JMenu
jm1=new JMenu("文件");
//设置助记符
jm1.setMnemonic('F');
//创建二级JMenuItem
jmi1=new JMenuItem("打开(0)",new ImageIcon("open.jpg"));//注册监听
jmi1.addActionListener(this);
jmi1.setActionCommand("open"); jmi2=new JMenuItem("保存(s)");
//注册监听
jmi2.addActionListener(this);
jmi2.setActionCommand("save");//放入到JFrame
this.add(jta); //默认正中全占 BORDER布局//加入 Jta
this.setJMenuBar(jmb);
//把JMenu加入 JMenuBar 一级
jmb.add(jm1);
//把JMenuItem放入JMenu
jm1.add(jmi1);
jm1.add(jmi2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭就退出
this.setSize(400,300);
this.setVisible(true); } public void actionPerformed(ActionEvent e)
{
//判断是那个菜单被选中
if(e.getActionCommand().equals("open"))
{
//System.out.println("open");
//JFileChooser
//创建一个文件选择(组件)对象
JFileChooser jfc1=new JFileChooser();
jfc1.setDialogTitle("请选择文件...");
//默认方式
jfc1.showOpenDialog(null);
//显示
jfc1.setVisible(true);//得到用户选择的文件全路径
String filename=jfc1.getSelectedFile().getAbsolutePath();
//System.out.println(filename);
FileReader fr=null;
BufferedReader br=null;
try
{
fr=new FileReader(filename) ;
br=new BufferedReader(fr);//从文件中读取信息并显示到ita
String s="";
String allCon="";
while ((s=br.readLine())!=null)
{ allCon+=s+"\r\n"; }
//放到JTA
jta.setText(allCon); } catch (Exception e2)
{
// TODO: handle exception
e2.printStackTrace(); }
finally {
try {
br.close();
fr.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
else if (e.getActionCommand().equals("save"))
{
//出现保存对话框
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("另存为...");
//默认方式显示
jfc.showSaveDialog(null);
jfc.setVisible(true);//得到用户希望把文件保存到何处,文件全路径
String file=jfc.getSelectedFile().getAbsolutePath();//准备写入到指定文件
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(file);
bw=new BufferedWriter(fw); bw.write(this.jta.getText()); //优化用字符串数组 } catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
finally
{
try {
// fw.close(); 流关闭的顺序有问题,
bw.close();
fw.close(); } catch (Exception e3) {
// TODO: handle exception
e3.printStackTrace();
}
} }
}}
两种方案。要么,关闭前,先将缓冲区flush一下。
要么,先关闭缓冲区,在关闭Writer。包装器模式,
先创建的对象,后关闭;后创建的对象,先关闭。
jta.setText("");
kit.read(new FileReader(file), jta.getDocument(),0);//保存到文件
kit.write(new FileWriter(file),jta.getDocument(),0,jta.getDocument().getLength());
finally
{
try {
fw.close(); 先关了底层的文件流,此时,内容还在bw的缓冲byte[]中
bw.close(); bw关闭的时候,要把byte[]写入fw中,发现fw已经被关闭了,导致出错,内容也一并丢失
} catch (Exception e3) {
// TODO: handle exception
e3.printStackTrace();
}
}