java编写的记事本的保存和另存为功能

没有英文名 2009-12-19 02:03:27
我用java写了一个记事本,能够打开保存和另存为的对话框 但是实际上却没有实现这两个功能 比如说 我用这个记事本写了一点文字现在要保存它,单击这个记事本的文件,然后 选中另存为 在选着 要保存的路径 单击保存就可以了 。 但是我现在单击保存确定按钮后 去盘中找不到这个文件,这个功能没实现 。望各位高手给点意见。或给个这样的列子。(其他部分代码可以不要,只给这部分代码就可以了。) 下面是我的代码



import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
class MyWindow extends Frame implements ActionListener//,KeyListener
{
MenuBar menubar;
Menu menu1,menu2,menu3,menu4;
MenuItem menuitem[]=new MenuItem[22];
String name[]={"新建(N)","打开(O)...","保存(S)","另存为(A)...","页面设置(U)...","打印(P)...","退出(X)",
"撤消(U)","剪贴(T)","复制(C)","粘贴(P)","删除(L)","查找(F)...","查找下一个(N)","替换(R)...",
"转到(G)...","全选(A)","时间/日期(D)","自动换行(W)","字体(F)...","帮助主题(H)","关于记事本(A)"};
TextArea text1;
FileDialog filedialog_save,filedialog_load,filedialog_save1; //声明一个保存文件对话框和一个打开文件对话框和另存为对话框
PrintJob p=null; //声明一个PrintJob对象 即打印
Graphics g=null;
Clipboard clipboard=null; //剪贴板
int i;
MyWindow(String s)
{
super(s);
Toolkit tool=getToolkit();
clipboard =getToolkit().getSystemClipboard(); //获得系统剪贴板
Dimension dim=tool.getScreenSize();
text1=new TextArea();
menubar=new MenuBar();
menu1=new Menu("文件");
menu2=new Menu("编辑");
menu3=new Menu("格式");
menu4=new Menu("帮助");
filedialog_load=new FileDialog(this,"打开文件对话框",FileDialog.LOAD);
filedialog_load.setVisible(false);
filedialog_save=new FileDialog(this,"保存文件对话框",FileDialog.SAVE);
filedialog_save.setVisible(false);
filedialog_save1=new FileDialog(this,"另存为",FileDialog.SAVE);
filedialog_save1.setVisible(false);
for(i=0;i<name.length;i++)
{
menuitem[i]=new MenuItem(name[i]);
menuitem[i].addActionListener(this);
}
menu1.add(menuitem[0]);
menu1.add(menuitem[1]);
menu1.add(menuitem[2]);
menu1.add(menuitem[3]);
menu1.addSeparator();//分割线
menu1.add(menuitem[4]);
menu1.add(menuitem[5]);
menu1.addSeparator();//分割线
menu1.add(menuitem[6]);
menu2.add(menuitem[7]);
menu2.addSeparator();//分割线
menu2.add(menuitem[8]);
menu2.add(menuitem[9]);
menu2.add(menuitem[10]);
menu2.add(menuitem[11]);
menu2.addSeparator();//分割线
menu2.add(menuitem[12]);
menu2.add(menuitem[13]);
menu2.add(menuitem[14]);
menu2.add(menuitem[15]);
menu2.addSeparator();//分割线
menu2.add(menuitem[16]);
menu2.add(menuitem[17]);
menu3.add(menuitem[18]);
menu3.add(menuitem[19]);
menu4.add(menuitem[20]);
menu4.add(menuitem[21]);
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
menubar.add(menu4);
setMenuBar(menubar);
setBounds(100,100,dim.width/2,dim.height/2);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{System.exit(0);
}
}
);
filedialog_load.addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{filedialog_load.setVisible(false);
}
}
);
filedialog_save.addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{filedialog_save.setVisible(false);
}
}
);
filedialog_save1.addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{filedialog_save1.setVisible(false);
}
}
);
add(text1,BorderLayout.CENTER);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e)
{
Object temp=e.getSource();
for(i=0;i<name.length;i++)
{ if(temp==menuitem[i])
{ if((menuitem[i].getLabel()).equals("新建(N)"))
{
new MyWindow("记事本");
} //新建功能
if((menuitem[i].getLabel()).equals("打开(O)..."))
{
filedialog_load.setVisible(true);
} //打开功能
if((menuitem[i].getLabel()).equals("保存(S)"))
{
filedialog_save.setVisible(true);

} //保存功能
if((menuitem[i].getLabel()).equals("另存为(A)..."))
{
filedialog_save1.setVisible(true);
} //另存为功能
if((menuitem[i].getLabel()).equals("打印(P)..."))
{
p=getToolkit().getPrintJob(this,"ok",null);
g=p.getGraphics();
g.translate(120,200);
this.printAll(g);
g.dispose();
p.end();
} //打印功能
if((menuitem[i].getLabel()).equals("退出(X)"))
{
System.exit(0);
} // 退出(X)功能
if((menuitem[i].getLabel()).equals("剪贴(T)"))
{
String thing=text1.getSelectedText();
StringSelection text=new StringSelection(thing);
clipboard.setContents(text,null);
int start=text1.getSelectionStart();
int end=text1.getSelectionEnd();
text1.replaceRange(" ",start,end);
} //剪贴功能
if((menuitem[i].getLabel()).equals("复制(C)"))
{
String thing=text1.getSelectedText();
StringSelection text=new StringSelection(thing);
clipboard.setContents(text,null);
} //复制功能
if((menuitem[i].getLabel()).equals("粘贴(P)"))
{
Transferable contents=clipboard.getContents(this);
DataFlavor flavor=DataFlavor.stringFlavor;
if(contents.isDataFlavorSupported(flavor))
try{
String str;
str=(String)contents.getTransferData(flavor);
text1.append(str);
}
catch(Exception ee){}
}//黏贴功能
if((menuitem[i].getLabel()).equals("删除(L)"))
{
String thing=text1.getSelectedText();
int start=text1.getSelectionStart();
int end=text1.getSelectionEnd();
text1.replaceRange(" ",start,end);
} //删除功能
}
}
}
}
public class JiShiBen
{
public static void main(String arg[])
{
new MyWindow("记事本");
}
}
...全文
1055 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yang677888 2009-12-20
  • 打赏
  • 举报
回复

import java.awt.FileDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/** 作一下记事本,包括菜单:
文件:新建/打开/保存/另存/退出
编辑:撤销/剪切/复制/粘贴/删除/查找/替换/全选
帮助:关于记事本(关闭窗口不退JVM用dispose方法)
*/
public class Notepad implements ActionListener{
JFrame jf = new JFrame("记事本");
JTextArea jta = new JTextArea(10,20);//记事本,显示纯文本的多行区域

public Notepad(){
String[] menuLabel ={"文件", "编辑","帮助"};
String[][] miLabel ={{"新建", "" , "打开", "保存", "另存","" , "退出"},
{"撤销", "剪切", "复制", "粘贴", " 删除", "","查找", "替换", "" ,"全选"}, {" 关于记事本"} };
JMenuBar jmb = new JMenuBar();
for(int i=0;i<menuLabel.length;i++){
JMenu jm = new JMenu(menuLabel[i]);
jmb.add(jm);
for(int j=0;j<miLabel[i].length;j++){
if("".equals(miLabel[i][j])){
jm.addSeparator();
}else{
JMenuItem jmi = new JMenuItem(miLabel[i][j]);
jm.add(jmi);
jmi.addActionListener(this);
}
}
}
jf.setJMenuBar(jmb);//JFrame加菜单栏时用setJmenuBar(),不用add
jf.add(new JScrollPane(jta));//加滚动条
jf.setLocation(300,300);//设计出现的位置
jf.setSize(400,400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Override
public void actionPerformed(ActionEvent e) {
String comm = e.getActionCommand();
if("新建".equals(comm)){
jta.setText("");
}else if("打开".equals(comm)){
FileDialog fd = new FileDialog(jf,"请选择要打开的文件",FileDialog.LOAD);
fd.setVisible(true);

}else if("保存".equals(comm)){

}else if("另存".equals(comm)){

}else if("退出".equals(comm)){

}else if("撤销".equals(comm)){

}else if("剪切".equals(comm)){

}else if("复制".equals(comm)){

}else if("粘贴".equals(comm)){

}else if("删除".equals(comm)){

}else if("查找".equals(comm)){

}else if("替换".equals(comm)){

}else if("全选".equals(comm)){

}else{//关于记事本

}
}
public static void main(String[] args) {
new Notepad();
}


}
Macelen 2009-12-19
  • 打赏
  • 举报
回复
我也不太清楚JAVA。
但我知道VB,我想他们俩应该是差不多的。
文件对话框本身好像是没有打开和保存功能的。。。要自己手动实现的。。
它的作用是可以获取 路径..

发帖
Java

4.9w+

社区成员

Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
帖子事件
创建了帖子
2009-12-19 02:03
社区公告
暂无公告