关于swin中文件对话框的问题

SADSDSDDASDASD 2010-03-07 11:34:25
我写的是一个局域网即时通信的系统
主窗体是Jframe类对象
这个有个文本区 就是用来显示聊天记录的
我在文本区里 加了一个邮件弹出菜单
在菜单上有加了事件的监听
目的是 但我单击右键 时 会弹出菜单

但点击这个菜单中的一个菜单项是 会出现一个文件保存对话框
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jmi1) {
System.out.print(1);
int i = JOptionPane.showConfirmDialog(this, "你确定要清理当前的聊天记录",
"确认对话框", JOptionPane.YES_NO_OPTION);
if (i == JOptionPane.YES_OPTION) {

jTextArea1.setText(null);
}
if (i == JOptionPane.NO_OPTION) {

}

}//这是处理清空文本去的。。
if (e.getSource() == jmi2) {
// File jilu =new java.io.File("jilu.txt");
// java.io.File jilu =new java.io.File("jilu.txt");
try {
FileDialog baoFileDialog = new FileDialog(this, "保存你的聊天记录",
FileDialog.SAVE);
baoFileDialog.setFile("聊天记录.txt");
baoFileDialog.setVisible(true);

File file = new File(baoFileDialog.getDirectory(),
baoFileDialog.getFile());

FileWriter tofile = new FileWriter(file);
BufferedWriter out = new BufferedWriter(tofile);
out.write(jTextArea1.getText(), 0, (jTextArea1.getText())
.length());
out.close();
tofile.close();

} catch (IOException e1) {
// TODO Auto-generated catch block
// e1.printStackTrace();
}//z这就是保存文本去里的信息用的

但在这里 程序运行的时候 会抛出一个异常。。。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.io.File.<init>(File.java:262)
at com.AVE.gui.Gui.actionPerformed(Gui.java:837)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

在clas文件中看 带色的里抛出的。。
就是 public File(String parent, String child) {
if (child == null) {
throw new NullPointerException();
}
if (parent != null) {
if (parent.equals("")) {
this.path = fs.resolve(fs.getDefaultParent(),
fs.normalize(child));
} else {
this.path = fs.resolve(fs.normalize(parent),
fs.normalize(child));
}
} else {
this.path = fs.normalize(child);
我想知道这是什么问题
还有 我在Jframe中加了一个JDesktopPane 之后在这里面有加了一个
JInternalFrame
但在JInternalFrame
里的文本去中 我用和在Frame中一样的办法 处理演出对话框缺不行。。
也就是下面这话没法实现 这是为什么呢
FileDialog baoFileDialog = new FileDialog(this, "保存你的聊天记录",
FileDialog.SAVE);
...全文
153 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SADSDSDDASDASD 2010-03-08
  • 打赏
  • 举报
回复
咋没有人帮帮我呢 我真的很着急的
SADSDSDDASDASD 2010-03-08
  • 打赏
  • 举报
回复
引用 3 楼 bayougeng 的回复:
baoFileDialog.setFile("聊天记录.txt");
可能是因为这个文件不存在。
你试试在这句之前加上:
Java codeFile history=new File(baoFileDialog.getDirectory(),"聊天记录.txt");if(!history.exists()){
history.createNewFile();
}
history=null;
还是有异常抛出
对了 麻烦问你一下 怎么在JInternalFrame 上加一个jTextArea 之后在jTextArea加一个右键菜单

但菜单上 有事件 能触发程序弹出一个保存对话框。。

在Frame上我做到了 但在JInternalFrame 上 是不是不能啊? 谢谢你了 帮帮我 我现在很着急
bayougeng 2010-03-08
  • 打赏
  • 举报
回复
baoFileDialog.setFile("聊天记录.txt");
可能是因为这个文件不存在。
你试试在这句之前加上:
File history = new File(baoFileDialog.getDirectory(), "聊天记录.txt");
if(!history.exists()){
history.createNewFile();
}
history = null;
aSysBang 2010-03-08
  • 打赏
  • 举报
回复
你确定 你要调用的都 new 了?
宅男小何 2010-03-08
  • 打赏
  • 举报
回复
帮顶,来学习学习!
帮顶,来学习学习!
帮顶,来学习学习!

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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