程序运行 报错 需要class,interface或enum}

sinat_37107989 2016-12-19 08:58:48
import java.awt.*;
import java.awt.event.*;
import java. io.*;
//继承 实现
public class myFrameJSB extends WindowAdapter implements MouseListener{
//声明一个窗体,通过new调用构造函数并赋值
Frame fr = new Frame("一个简单的记事本程序-2204130135");
//定义一个BorderLayout布局管理器
BorderLayout bl = new BorderLayout();
//添加一个多行文本框,通过new调用构造函数
TextArea ta = new TextArea("欢迎你使用记事本");
//添加Panel容器,通过new调用函数
Panel pl = new Panel();
//添加两个按钮
Button bopen = new Button("打开文件");
Button bsave = new Button("保存文件");
//构建两个对话框实例,指明两个对话框放在窗体上
FileDialog fdopen = new FileDialog(fr, "打开文件对话框", FileDialog.LOAD);
FileDialog fdsave = new FileDialog(fr, "保存文件对话框", FileDialog.SAVE);
//使用main方法,传入入参表
public static void main(String[] args){
//构建go实例
new myFrameJSB().go();
}
//go方法
public void go (){
//在窗体中载入名为bl的窗体布局管理器
fr.setLayout(bl);
//添加fr窗体的监听器,启动监听
fr.addWindowListener(this);
//通过调用new函数设置多行文本框的字符集,字符类型为Times New Roman,印刷体,20号字
ta.setFont(new Font("Times New Roman", Font.PLAIN, 20));
//把文本框添加到窗体的中间位置
fr.add("Center", ta);
//把pl容器放到窗体的下方
fr.add("South", pl);
//在pl容器里添加bopen按钮
pl.add(bopen);

//bopen按钮添加鼠标监听器,启动监听
bopen.addMouseListener(this);

//在pl容器里添加bsave
pl.add(bsave);
//bsave按钮添加鼠标监听器,启动监听
bsave.addMouseListener(this);
//设置窗体的尺寸,显示窗体
fr.setSize(400, 400);
fr.setVisible(true);
}
//定义鼠标事件
public void mouseClicked(MouseEvent e){
if(e.getSource() == bopen ){
//打开文件对话框
fdopen.setVisible(true);
//创建一个类的实例,使用new方法构建打开文件的方法
File file = new File(fdopen.getDirectory()+ fdopen.getFile());
//构建reader实例,赋值为空,不给其分布内存
Reader reader = null;
//声明变量
int tempchar;
//声明变量,赋值为空,分配其存储空间
String strStr = "";
//捕获异常
try{
//初始化reader,构建实例,按照字符流的方法读取文件
reader = new InputStreamReader(new FileInputStream(file));
//判断文件是否读取完成
while((tempchar = reader.read())!=-1){
//将整型tempchar转换成字符串类型,判断tempchar是否有换行
if(((char)tempchar) != '\r'){
strStr = strStr + (char)tempchar;
}
}
//关闭读取文件
reader.close();
}
//处理异常
catch(Exception e1){
e1.printStackTrace();
}
//将读取的数据传入多行文本框中
ta.setText(strStr);
}
//判断是否单击保存按钮
if(e.getSource() == bsave){
//打开保存的文件对话框
fdsave.setVisible(true);
//设置保存类型
FileChooser chooser = new FileChooser(".");
//-------------------------------------------------------------
chooser.addChoosableFileFilter(new CustomFileFilter("txt"));
chooser.addChoosableFileFilter(new CustomFileFilter("java"));
//-------------------------------------------------------------
//设置默认的文件管理器。如果不设置,则最后添加的文件过滤器为默认过滤器,本例中为javaFilter
int rs = chooser.showSaveDialog( fr.this);
//创建一个类的实例,调用new创建一个保存文件的构造函数,获取其保存路径和保存的文件名
File file = new File(fdsave.getDirectory() + fdsave.getFile());
//声明变量,赋值为空,不分配存储空间
Writer write = null;
//声明字符串变量,赋值为空,分配存储空间
String strStr = "";
//捕获异常
try{
//构建write实例,使用write方法把数据添加到基于数据流的文件建中
write = new OutputStreamWriter(new FileOutputStream(file));
//把多行文本框的文字导入到文件中
strStr = ta.getText();
//使用write方法,把数据保存文件中
write.write(strStr);
//显示文件保存成功
ta.setText("写入成功");
//释放内存
write.close();
}
//处理异常
catch(Exception e2){
e2.printStackTrace();
}
}
}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
//将窗体关闭方法,添加到windows事件中
public void windowClosing(WindowEvent e){
fr.dispose();
}
private static class CustomFileFilter extends FileFilter {
String ext;
CustomFileFilter(String ext) {
this.ext = ext;
}
}
@Override
public boolean accept(File f) {
if (f.isDirectory())
{
return true;
}
String fileName = f.getName();
int index = fileName.lastIndexOf('.');
if (index > 0 && index < fileName.length() - 1)
{
String extension = fileName.substring(index + 1).toLowerCase();
if (extension.equals(ext)){
return true;
}
}
return false;
}

@Override
public String getDescription() {
if (ext.equals("txt")){
return "文本文档(.txt)";
}
else if (ext.equals("java")){
return "java文件(.java)";
}
return "";
}
}
}

...全文
255 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bcsflilong 2016-12-20
  • 打赏
  • 举报
回复
按照我的来 应该没问题
  • 打赏
  • 举报
回复
记事本编辑的?165行附近有空格或者别的什么东西,复制出来,重新粘贴。
bcsflilong 2016-12-20
  • 打赏
  • 举报
回复
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Tone
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFileChooser;

import java.io.*;
import javax.swing.filechooser.FileNameExtensionFilter;

//继承  实现
public class myFrameJSB extends WindowAdapter implements MouseListener {
//声明一个窗体,通过new调用构造函数并赋值

    Frame fr = new Frame("2204130136");
//定义一个BorderLayout布局管理器
    BorderLayout bl = new BorderLayout();
//定义一个多行文本框ta
    TextArea ta = new TextArea("欢迎你使用记事本");
//定义一个容器:p1
    Panel pl = new Panel();
//定义两个按钮:bopen bsave
    Button bopen = new Button("打开文件");
    Button bsave = new Button("1保存文件");
//构建两个对话框实例并放入窗体中
    FileDialog fdopen = new FileDialog(fr, "打开文件对话框", FileDialog.LOAD);//可以设置保存文档的类型
    FileDialog fdsave = new FileDialog(fr, "保存文件对话框", FileDialog.SAVE);
    JFileChooser fileChooser = new JFileChooser();

//使用main方法,传入入参表
    public static void main(String[] args) {
//构建go实例
        new myFrameJSB().go();
    }
//go方法

    public void go() {
//在窗体中载入名为bl的窗体布局管理器
        fr.setLayout(bl);

        //添加fr窗体的监听器,启动监听
        fr.addWindowListener(this);

//定义一个多行文本框的字符集,字符类型(字体)为Times New Roman,印刷体,20号字
        ta.setFont(new Font("Times New Roman", Font.PLAIN, 20));

//将文本框ta添加到窗体中间
        fr.add("Center", ta);

//把容器pl放到窗体的下方
        fr.add("South", pl);

//在pl容器里添加按钮bopen
        pl.add(bopen);

//bopen按钮添加鼠标监听器,启动监听
        bopen.addMouseListener(this);

//在容器pl里添加按钮bsave
        pl.add(bsave);

//按钮bsave添加鼠标监听器,启动监听
        bsave.addMouseListener(this);

//设置样式
        fr.setSize(400, 400);
        fr.setVisible(true);

    }

//定义鼠标的事件
    public void mouseClicked(MouseEvent e) {
        if (e.getSource() == bopen) {
//将打开文件对话框显示出来
            fdopen.setVisible(true);
//构建一个类实例
            File file = new File(fdopen.getDirectory() + fdopen.getFile());
//新建一个读取实例 赋空值(无存储空间)
            Reader reader = null;
//构建变量
            int tempchar;
//有存储空间的空值
            String strStr = "";
//异常处理 数据被迫中断时
            try {
//构建reader实例,使文件按照字符流的方法读取
                reader = new InputStreamReader(new FileInputStream(file));
                while ((tempchar = reader.read()) != -1) {
//添加数据类型转换 将int 转换为char 判断输入文字是否回行
                    if (((char) tempchar) != '\r') {
                        strStr = strStr + (char) tempchar;
                    }
                }
                reader.close();
            } //捕获异常
            catch (Exception e1) {
                e1.printStackTrace();
            }
//导入多行文本框
            ta.setText(strStr);
//finally 存在多个异常时可以添加
        } else if (e.getSource() == bsave) {
//显示“保存按钮”的窗体

            // fdsave.setVisible(true);
//构建一个文件对象file,用new调用它的构造函数,获得文件地址(目录)
            //File file = new File(fdsave.getDirectory() + fdsave.getFile());


//添加保存的类型(*.txt)

            MyFileFilter txtFilter = new MyFileFilter(".txt", "txt 文件 (*.txt)");
            fileChooser.addChoosableFileFilter(txtFilter);
            //fileChooser.showSaveDialog(null);
            int fresult;
            fresult = fileChooser.showSaveDialog(null);
            if (fresult == JFileChooser.APPROVE_OPTION) { // 用户点击了“确定”按钮
                File file = fileChooser.getSelectedFile(); //获得文件名
                // 获得被选中的过滤器
                MyFileFilter filter = (MyFileFilter) fileChooser.getFileFilter();
                // 获得过滤器的扩展名
                String ends = filter.getEnds();
                File newFile = null;
                if (file.getAbsolutePath().toUpperCase().endsWith(ends.toUpperCase())) {
                    // 如果文件是以选定扩展名结束的,则使用原名
                    newFile = file;
                } else {
                    // 否则加上选定的扩展名
                    newFile = new File(file.getAbsolutePath() + ends);
                }
// 以下用 newFile 完成保存文件的操作
                // fileChooser.
//声明一个实例Writer(将对象转换为实例才能使用也就是赋值)
                Writer writer = null;
//构建一个字符串变量strStr
                String strStr = "";
//异常处理:处理数据被迫中断(死机)
                try {
//构建一个实例,输出数据到一个基于文件的流
                    writer = new OutputStreamWriter(new FileOutputStream(newFile));
                    strStr = ta.getText();
//数据导出
                    writer.write(strStr);
                    ta.setText("写入成功!");
//内存释放
                    writer.close();
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }


        }

    }

    public void mousePressed(MouseEvent e) {
    }

    public void mouseReleased(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }

//关闭窗体
    public void windowClosing(WindowEvent e) {
        fr.dispose();
//System.Exit(0);
    }
}

class MyFileFilter extends javax.swing.filechooser.FileFilter {

    String ends; // 文件后缀
    String description; // 文件描述文字

    public MyFileFilter(String ends, String description) { // 构造函数
        this.ends = ends; // 设置文件后缀
        this.description = description; // 设置文件描述文字
    }

    @Override
    // 只显示符合扩展名的文件,目录全部显示
    public boolean accept(File file) {
        if (file.isDirectory()) {
            return true;
        }
        String fileName = file.getName();
        if (fileName.toUpperCase().endsWith(this.ends.toUpperCase())) {
            return true;
        }
        return false;
    }

    @Override
    // 返回这个扩展名过滤器的描述
    public String getDescription() {
        return this.description;
    }

    // 返回这个扩展名过滤器的扩展名
    public String getEnds() {
        return this.ends;
    }
}
  • 打赏
  • 举报
回复
看看165行是啥,整一下排版看是不是大括号不匹配
sinat_37107989 2016-12-20
  • 打赏
  • 举报
回复
谢谢 各位大神 问题已经解决了
sinat_37107989 2016-12-19
  • 打赏
  • 举报
回复

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧