当前位置: 代码迷 >> Java相关 >> [求助]大家来看看我的记事本代码(大家帮忙,问题在后面的帖子中)
  详细解决方案

[求助]大家来看看我的记事本代码(大家帮忙,问题在后面的帖子中)

热度:125   发布时间:2006-10-30 23:40:08.0
[求助]大家来看看我的记事本代码(大家帮忙,问题在后面的帖子中)

剪切,复制和粘帖的代码没弄上来....... 运行出现异常不知道该怎么解决..........
错误嘛说也说不清楚,还请哪位好心人运行下看看帮帮我.....谢了!!!!!!

package io;

import java.io.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class TextBook extends JFrame implements ActionListener {

static JTextArea theArea = null; //文本输入的地方

JMenu themenu = null; //菜单

boolean colorchanged = true; // 控制自动换行的,因为不会像windows的那样打个勾

BufferedReader bf = null; //读
BufferedWriter bw = null; //写

String str = null; //好像没什么用

static FileDialog open = null, save = null;

public TextBook() {
super("记事本----しΟν∈→魈制作");
theArea = new JTextArea();
theArea.setEditable(true);
Container cp = getContentPane();
cp.add(new JScrollPane(theArea));
// cp.setLayout(new BorderLayout());
JMenuBar MBar = new JMenuBar();
MBar.setOpaque(true);

JMenu mfile = buildFileMenu();
// mfile.setOpaque(true);
MBar.add(mfile);

JMenu medite = buildEditeMenu();
// medite.setOpaque(true);
MBar.add(medite);

JMenu mformat = buildFormatMenu();
// mformat.setOpaque(true);
MBar.add(mformat);
setJMenuBar(MBar);

}

public JMenu buildFileMenu() {
themenu = new JMenu("文件");

JMenuItem newf = new JMenuItem("新建");
newf.addActionListener(this);

open = new FileDialog(this, "打开对话框", FileDialog.LOAD);
open.setVisible(false);

save = new FileDialog(this,"保存对话框",FileDialog.SAVE);
save.setVisible(false);

JMenuItem close = new JMenuItem("关闭");
close.addActionListener(this);

JMenuItem quit = new JMenuItem("退出");
quit.addActionListener(this);

themenu.add(newf);
themenu.add(open);
themenu.add(close);
themenu.add(save);
themenu.addSeparator();
themenu.add(quit);

return themenu;
}

public JMenu buildEditeMenu() {
themenu = new JMenu("编辑");

JMenuItem copy = new JMenuItem("复制");
JMenuItem cut = new JMenuItem("剪切");
JMenuItem paste = new JMenuItem("粘帖");

themenu.add(copy);
themenu.add(cut);
themenu.add(paste);

return themenu;

}

public JMenu buildFormatMenu() {
themenu = new JMenu("格式");

JMenuItem format = new JMenuItem("自动换行");
format.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// theArea.setLineWrap(true);
// theArea.setWrapStyleWord(true);
// boolean colorchanged = true;
if (colorchanged) {
((JMenuItem) e.getSource()).setForeground(Color.red);
theArea.setLineWrap(true);
theArea.setWrapStyleWord(true);
} else {
((JMenuItem) e.getSource()).setForeground(Color.black);
theArea.setLineWrap(false);
theArea.setWrapStyleWord(false);
}
colorchanged = !colorchanged;
}
});
JMenuItem fontSize = new JMenuItem("字体");
fontSize.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String size = JOptionPane.showInputDialog(new JFrame(),
"输入你要的字体大小", "字体选择", JOptionPane.YES_NO_OPTION);
theArea.setFont(new Font(null, Font.BOLD,
Integer.valueOf(size)));
}
});

themenu.add(format);
themenu.add(fontSize);

return themenu;
}

public void actionPerformed(ActionEvent e) {

//if(e.getSource.equals("new"))
str = e.getActionCommand(); //所以说str没用
if(str == "新建") {
if(!theArea.getText().equals("")) {
int result = JOptionPane.showConfirmDialog(new JFrame(), "Text" +
"的文字已改变,要保存吗?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION);
// 显示一个对话框,包括确定,否和取消三个按钮,result记录你点的是那个键
if( result == JOptionPane.YES_OPTION )
open.setVisible(true); //这边可能有问题,但是我运行不了..所以不能调试......

else if( result == JOptionPane.NO_OPTION )
theArea.setText("");
}//根据你的选择判断下一步
}
else if(str == "打开") {
open.setVisible(true);
try {
File readfile = new File(open.getDirectory(), open.getFile());
bf = new BufferedReader(new FileReader(readfile));
while(bf.readLine() != null) {

theArea.append(bf.readLine() + "\n");
}
bf.close();
} catch (FileNotFoundException e1) {
// TODO 自动生成 catch 块
JOptionPane.showMessageDialog(this,"警告","未找到该文件或文件发生异常",JOptionPane.ERROR_MESSAGE);
} catch (IOException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
// open.addActionListener(this);
}

else if(str == "保存") {
save.setVisible(true);
try {
//File readf = new File(save.getDirectory(),save.getFile());
//bf = new BufferedReader(new FileReader(readf));
File writefile = new File(save.getDirectory(), save.getFile());

bw = new BufferedWriter( new FileWriter(writefile));
bw.write(theArea.getText(), 0, (theArea.getText().length()));

bw.flush();
bw.close();
} catch (FileNotFoundException e1) {
// TODO 自动生成 catch 块
JOptionPane.showMessageDialog(this,"警告","未找到该文件或文件发生异常",JOptionPane.ERROR_MESSAGE);
} catch (IOException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
}
else if(str == "关闭" ||str == "退出") {
System.exit(0);
}
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根

JFrame jf = new TextBook();
jf.setSize(new Dimension(800, 600));
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
// System.exit(0);
if (!theArea.getText().equals("")) {
int result = JOptionPane.showConfirmDialog(new JFrame(),
"Text" + "的文字已改变,要保存吗?", "记事本",
JOptionPane.YES_NO_CANCEL_OPTION);
if( result == JOptionPane.YES_OPTION )
open.setVisible(true); //这边可能有问题,但是我运行不了..所以不能调试......
System.exit(0);
}
}
});
jf.setVisible(true);

}

}

[此贴子已经被作者于2006-11-13 18:06:40编辑过]

搜索更多相关的解决方案: import  记事本  java  awt  代码  

----------------解决方案--------------------------------------------------------

我自己做了个记事本的程序功能不全 你看看吧!对你也许有帮助!


[此贴子已经被作者于2006-10-31 0:13:31编辑过]


----------------解决方案--------------------------------------------------------

......楼上的代码还有JSP什么的.........东西太复杂了........暂时还是不要去研究了....
请哪位好心的朋友帮我分析一下我的代码就好了.....................我真不知道这个异常该怎么办...........不会改啊


----------------解决方案--------------------------------------------------------
我正在研究,不要着急
----------------解决方案--------------------------------------------------------
加我QQ32645957 哪部分不清楚问我!
----------------解决方案--------------------------------------------------------
楼主你的程序我怎么不能编译通过的啊?
theArea.setFont(new Font(null, Font.BOLD,
Integer.valueOf(size)));
有错误!!

----------------解决方案--------------------------------------------------------

非常感谢各位的帮忙 由于学校宿舍调整搞得我这一段时间都没能上网....郁闷啊..............以后又能常来了 问题我也解决了 呵呵


----------------解决方案--------------------------------------------------------
以下是引用lgdcky在2006-11-12 22:23:29的发言:
楼主你的程序我怎么不能编译通过的啊?
theArea.setFont(new Font(null, Font.BOLD,
Integer.valueOf(size)));
有错误!!

Font的构造函数是什么,你知道么?
Font(String name, int style, int size)
你最后那个是Integer,所以编译通不过了


----------------解决方案--------------------------------------------------------
不会啊 我不是能编过嘛 还有用呢
不这版主说的也对呵 确实这个返回的是一个Integer 那为什么我的还有用呢?

[此贴子已经被作者于2006-11-13 0:04:56编辑过]


----------------解决方案--------------------------------------------------------

package io;

import java.io.*;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class TextBook extends JFrame implements ActionListener {

static JTextArea theArea = null; //文本输入的地方

JMenu themenu = null; //菜单

boolean colorchanged = true; // 控制自动换行的,因为不会像windows的那样打个勾

BufferedReader bf = null; //读
BufferedWriter bw = null; //写

String str = null; //好像没什么用

static FileDialog openfile = null, savefile = null; //调用打开,保存对话框

public TextBook() {
super("记事本----しΟν∈→魈制作");
theArea = new JTextArea();
theArea.setEditable(true);
Container cp = getContentPane();
cp.add(new JScrollPane(theArea));
// cp.setLayout(new BorderLayout());
JMenuBar MBar = new JMenuBar();
MBar.setOpaque(true);

JMenu mfile = buildFileMenu();
mfile.setOpaque(true);
MBar.add(mfile);

JMenu medite = buildEditeMenu();
medite.setOpaque(true);
MBar.add(medite);

JMenu mformat = buildFormatMenu();
mformat.setOpaque(true);
MBar.add(mformat);
setJMenuBar(MBar); //都是菜单

openfile = new FileDialog(this, "打开对话框", FileDialog.LOAD);
openfile.setVisible(false);

savefile = new FileDialog(this,"保存对话框",FileDialog.SAVE);
savefile.setVisible(false);

}

public JMenu buildFileMenu() {
themenu = new JMenu("文件");

JMenuItem newf = new JMenuItem("新建");
newf.addActionListener(this);

JMenuItem open = new JMenuItem("打开");
open.addActionListener(this);

JMenuItem save = new JMenuItem("保存");
save.addActionListener(this);

JMenuItem close = new JMenuItem("关闭");
close.addActionListener(this);

JMenuItem quit = new JMenuItem("退出");
quit.addActionListener(this);

themenu.add(newf);
themenu.add(open);
themenu.add(save);
themenu.add(close);
themenu.addSeparator();
themenu.add(quit);

return themenu;
}

public JMenu buildEditeMenu() {
themenu = new JMenu("编辑");

JMenuItem copy = new JMenuItem("复制");
JMenuItem cut = new JMenuItem("剪切");
JMenuItem paste = new JMenuItem("粘帖");

themenu.add(copy);
themenu.add(cut);
themenu.add(paste);

return themenu;

}
//上面的不要解释吧,就是搞菜单的

public JMenu buildFormatMenu() {
themenu = new JMenu("格式");

JMenuItem format = new JMenuItem("自动换行");
format.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// theArea.setLineWrap(true);
// theArea.setWrapStyleWord(true);
// boolean colorchanged = true;
if (colorchanged) {
((JMenuItem) e.getSource()).setForeground(Color.red);
theArea.setLineWrap(true);
theArea.setWrapStyleWord(true);
} else {
((JMenuItem) e.getSource()).setForeground(Color.black);
theArea.setLineWrap(false);
theArea.setWrapStyleWord(false);
}
colorchanged = !colorchanged;
}
});
JMenuItem fontSize = new JMenuItem("字体");
fontSize.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String size = JOptionPane.showInputDialog(new JFrame(),
"输入你要的字体大小", "字体选择", JOptionPane.YES_NO_OPTION); //得到你输入的字体大小

theArea.setFont(new Font(null, Font.BOLD,
Integer.valueOf(size)));
}
});

themenu.add(format);
themenu.add(fontSize);

return themenu;
}

public void actionPerformed(ActionEvent e) {

//if(e.getSource.equals("new")) //可以这个来判断你按的那个菜单,所以说str没用

//新建事件
str = e.getActionCommand();
if(str == "新建") {
if( !theArea.getText().equals("") ) {
int result = JOptionPane.showConfirmDialog(new JFrame(), "Text" +
"的文字已改变,要保存吗?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION);
// 显示一个对话框,包括确定,否和取消三个按钮,result记录你点的是那个键,根据你的选择判断下一步
if( result == JOptionPane.YES_OPTION ) //{
saveMethod(); //调用保存事件方法
theArea.setText("");
/*}

else if( result == JOptionPane.NO_OPTION )
theArea.setText(""); //消空笔记本*/
}
}

//打开事件
else if(str == "打开") {
openfile.setVisible(true);
try {
File readfile = new File(openfile.getDirectory(), openfile.getFile());
setTitle(readfile.getName() + "----记事本");
bf = new BufferedReader(new FileReader(readfile));
while(bf.readLine() != null) {

theArea.append(bf.readLine() + "\n");
}
bf.close();
} catch (FileNotFoundException e1) {
JOptionPane.showMessageDialog(this,"警告","未找到该文件或文件发生异常",JOptionPane.ERROR_MESSAGE);
} catch (IOException e1) {
e1.printStackTrace();
}
}

else if(str == "保存")
saveMethod(); //调用保存事件方法
else if(str == "关闭" ||str == "退出")
System.exit(0);
}

//保存事件方法
public void saveMethod() {
savefile.setVisible(true);
try {
File writefile = new File(savefile.getDirectory(), savefile.getFile());

bw = new BufferedWriter( new FileWriter(writefile));
bw.write(theArea.getText(), 0, (theArea.getText().length()));

bw.flush();
bw.close();
} catch (FileNotFoundException e1) {
JOptionPane.showMessageDialog(this,"警告","未找到该文件或文件发生异常",JOptionPane.ERROR_MESSAGE);
} catch (IOException e1) {
e1.printStackTrace();
}
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根

JFrame jf = new TextBook();
jf.setSize(new Dimension(800, 600));
jf.addWindowListener(new WindowAdapter() { //关闭事件
public void windowClosing(WindowEvent e) {
if (!theArea.getText().equals("")) {
int result = JOptionPane.showConfirmDialog(new JFrame(),
"Text" + "的文字已改变,要保存吗?", "记事本",
JOptionPane.YES_NO_CANCEL_OPTION); //一个选择对话框,和前面的一样
if( result == JOptionPane.YES_OPTION )
new TextBook().saveMethod(); //调用保存事件方法
}
System.exit(0);
}
});
jf.setVisible(true);

}

}

请那位来帮我改下保存和打开事件的方法...
问题:
1: 打开方法时 总有的地方读不出来 不明白是什么回事.
2: 保存方法不能自动保存为Txt类型,不知道怎么搞..........

[此贴子已经被作者于2006-11-13 0:16:06编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案