黑马程序员技术交流社区
标题:
关于保存文件的一个小问题.
[打印本页]
作者:
陈中岩
时间:
2013-4-26 01:55
标题:
关于保存文件的一个小问题.
本帖最后由 陈中岩 于 2013-4-26 22:24 编辑
我先描述一下问题.我是一步一步跟着毕老师的视频做的.但是我的保存之后,保存的对话框并没有关闭.请问是什么原因,
第二个问题:我的文件已经有了,但是再进行保存的时候,仍然进行弹窗.
代码如下:
package test11;
//练习-打开文件
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyMenuTest {
private Frame f;
private MenuBar bar;//菜单栏
private Menu fileMenu;//菜单
private MenuItem openItem,saveItem,closeItem;//子菜单
private FileDialog openDia,saveDia;//打开,保存
private TextArea ta;//文本区域
private File file;
MyMenuTest()
{
init();
}
public void init()
{
f = new Frame();
f.setBounds(100,100,500,600);
//f.setLayout(new FlowLayout());
bar = new MenuBar();
fileMenu = new Menu("文件");
closeItem = new MenuItem("退出");
openItem = new MenuItem("打开");
saveItem = new MenuItem("保存");
ta = new TextArea();
f.setMenuBar(bar);//添加菜单
bar.add(fileMenu);//添加"文件"
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(closeItem);
f.add(ta);//文本区域
openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);
myEvent();
f.setVisible(true);
}
public void myEvent()
{
//保存的事件
saveItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//弹与不弹就看文件存不存在..
if(file==null)
{ //弹出
saveDia.setVisible(true);
String dirPath = saveDia.getDirectory();//路径
String fileName = saveDia.getFile();//名字
if(dirPath==null || fileName==null)//如果有一个为空的话,那么就返回
return ;
file = new File(dirPath+fileName);
}
try
{
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
String text = ta.getText();
bufw.write(text);
bufw.close();
}
catch(IOException ex)
{
throw new RuntimeException();
}
}
});
//打开的事件
openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openDia.setVisible(true);//显示
String dirPath = openDia.getDirectory();//路径
String fileName = openDia.getFile();//名字
System.out.println(dirPath+fileName);
if(dirPath==null || fileName==null)//如果有一个为空的话,那么就返回
return ;
ta.setText("");//添加下个文件之前先清空文本区域
file = new File(dirPath+fileName);
try
{
BufferedReader bufr = new BufferedReader(new FileReader(file));
String line = null;
while((line=bufr.readLine())!=null)
{
ta.append(line+"\r\n");
}
bufr.close();
}
catch(IOException es)
{
throw new RuntimeException("读取失败");
}
}
});
saveItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
saveDia.setVisible(true);
}
});
//f的窗口事件
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
closeItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new MyMenuTest();
}
}
复制代码
作者:
陈中岩
时间:
2013-4-26 22:24
等了一天也木有人帮我解答,自己动手琢磨了2个小时才发现,竟然重复了一块代码
saveItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
saveDia.setVisible(true);
}
});
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2