黑马程序员技术交流社区
标题:
简单记事本程序遇到问题了
[打印本页]
作者:
ò壞尛孩
时间:
2014-5-8 23:17
标题:
简单记事本程序遇到问题了
本帖最后由 ò壞尛孩 于 2014-5-8 23:20 编辑
<div class="blockcode"><blockquote>package com.itheima;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class MyMenuTest {
private Frame f=null;
private TextArea ta=null;
private FileDialog fileOpenDia=null;
private FileDialog fileSaveDia=null;
private MenuBar mb=null;
private Menu fileMenu=null;
private MenuItem openItem=null;
private MenuItem saveItem=null;
private MenuItem quitItem=null;
private File file;
MyMenuTest(){
init();
}
private void init(){
f=new Frame("My First Program of Text");
mb=new MenuBar();
fileMenu=new Menu("文件");
openItem=new MenuItem("打开");
saveItem=new MenuItem("保存");
quitItem=new MenuItem("退出");
ta=new TextArea();
f.setBounds(300, 200, 800, 600);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(quitItem);
mb.add(fileMenu);
f.setMenuBar(mb);
f.add(ta);
fileOpenDia=new FileDialog(f,"打开文件",FileDialog.LOAD);
fileSaveDia=new FileDialog(f,"保存文件",FileDialog.SAVE);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
f.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
quitItem.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
saveItem.addActionListener(new ActionListener(){
String dirPath=null;
String fileName=null;
BufferedWriter bufw=null;
@Override
public void actionPerformed(ActionEvent e) {
if(file==null){
fileSaveDia.setVisible(true);
dirPath=fileSaveDia.getDirectory();
fileName=fileSaveDia.getFile();
if(dirPath==null||fileName==null)
return;
file=new File(dirPath,fileName);
System.out.println(dirPath+fileName);
}
try {
bufw=new BufferedWriter(new FileWriter(file));
String text=ta.getText();
bufw.write(text);
bufw.flush();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
finally{
if(bufw!=null){
try {
bufw.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
});
openItem.addActionListener(new ActionListener(){
String dirPath=null;
String fileName=null;
BufferedReader bufr=null;
@Override
public void actionPerformed(ActionEvent e){
fileOpenDia.setVisible(true);
dirPath=fileOpenDia.getDirectory();
fileName=fileOpenDia.getFile();
if(dirPath==null||fileName==null)
return;
ta.setText("");
file=new File(dirPath,fileName);
System.out.println(dirPath+fileName);
try {
bufr=new BufferedReader(new FileReader(file));
String line=null;
while((line=bufr.readLine())!=null){
ta.append(line+"\r\n");
}
} catch (IOException ex) {
ex.printStackTrace();
}
finally{
if(bufr!=null){
try {
bufr.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
});
saveItem.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
fileSaveDia.setVisible(true);
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyMenuTest();
}
}
复制代码
这里红色代码区!如果文件已经存在 ,或者用打开按钮打开一个文件,那么这个 private File file;绝对不是空的!
可是这里运行的时候为什么总是认为file是空的,总是打开存储对话框!????????
存储的时候 如果文件存在是不打开存储对话框的!求解?怎么回事???
作者:
曹冬明
时间:
2014-5-8 23:44
你的myEvent方法中的saveItem监听添加了两次,每次点保存的时候都是有两个保存窗口,下面那个监听器不管你文件存不存在都会显示出来
作者:
ò壞尛孩
时间:
2014-5-9 23:44
曹冬明 发表于 2014-5-8 23:44
你的myEvent方法中的saveItem监听添加了两次,每次点保存的时候都是有两个保存窗口,下面那个监听器不管你 ...
谢谢! 我已经找出问题了! 敲代码的时候 果断不能这个没敲好 去敲别的!
作者:
崔伟明
时间:
2014-11-29 19:30
我都看晕了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2