package it.demo;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class Demo{
private Frame frame;
private MenuBar menuBar;
private Menu menu;
private MenuItem menuItemClose,menuItemOpen,menuItemSave;
private FileDialog fileDialogOpen,fileDialogSave;
private TextArea textArea;
private File file=null;
Demo(){
init();
}
public void init(){
frame=new Frame();
frame.setBounds(400, 200, 400, 300);
menuBar=new MenuBar();
menu=new Menu("文件");
menuItemClose=new MenuItem("关闭");
menuItemOpen=new MenuItem("打开");
menuItemSave=new MenuItem("保存");
fileDialogOpen=new FileDialog(frame,"Open Dialog",FileDialog.LOAD);
fileDialogSave=new FileDialog(frame,"Save Dialog",FileDialog.SAVE);
textArea=new TextArea();
frame.setMenuBar(menuBar);
frame.add(textArea,BorderLayout.NORTH);
menuBar.add(menu);
menu.add(menuItemClose);
menu.add(menuItemOpen);
menu.add(menuItemSave);
myEvent();
frame.setVisible(true);
}
public void myEvent(){
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
menuItemClose.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
menuItemOpen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
fileDialogOpen.setVisible(true);
String filePath=fileDialogOpen.getDirectory();
String fileName=fileDialogOpen.getFile();
if(filePath==null||fileName==null){
return;
}
//System.out.println(filePath+"...."+fileName);
textArea.setText("");
file=new File(filePath,fileName);
BufferedReader bufr=null;
try{
bufr=new BufferedReader(new FileReader(file));
String line=null;
while((line=bufr.readLine())!=null){
textArea.append(line+"\n\r");
}
}catch(IOException ex){
throw new RuntimeException("读取失败");
}finally{
try{
if(bufr!=null)
bufr.close();
}catch(IOException exc){
throw new RuntimeException("关闭失败");
}
}
}
});
menuItemSave.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(file==null){
fileDialogSave.setVisible(true);
String filePath=fileDialogSave.getDirectory();
String fileName=fileDialogSave.getFile();
if(filePath==null||fileName==null){
return;
}
//System.out.println(filePath+"...."+fileName);
file=new File(filePath,fileName);
}
BufferedWriter bufw=null;
try{
bufw=new BufferedWriter(new FileWriter(file));
String str=textArea.getText();
bufw.write(str);
bufw.flush();
}catch(IOException ex){
throw new RuntimeException("写入失败");
}finally{
try{
if(bufw!=null);
bufw.close();
}catch(IOException exc){
throw new RuntimeException("关闭失败");
}
}
}
});
}
public static void main(String[] args){
new Demo();
}
}
注意:编译后会生成Demo.class、Demo$1.class、Demo$2.class、Demo$3.class、Demo$4.class5个类文件,$后面带数字是匿名内部类产生的,$后面如果是字母则是内部类产生的。Eclipse的window->show view->navigator,可显示出bin文件。另外java文件内容不做任何修改,过了几分钟,再次执行build project,不会重新生成Test.class文件。
即便把前面已经生成的class文件删除,然后重新执行build project,照样不会生成class文件。
如果把java文件稍作修改,然后再改回来,执行build project就可以生成class文件了。