刚学JAVA 写的一个记事本程序 出问题了!!
本人写的记事本,实现了部分功能,可是部分监听(文件打开与保存等)总是无法实现啊,请各位高人指点...
package panel;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//import java.awt.event.InputEvent;
//import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
//import javax.swing.JPopupMenu;
import javax.swing.JTextArea;
//import javax.swing.KeyStroke;
//import com.sun.corba.se.spi.orbutil.fsm.Input;
public class userText extends JFrame implements ActionListener,MouseListener{
private JMenuBar menubar;
private JMenu menu_file,menu_editor,menu_format,menu_help;
private JMenuItem item1_new,item1_open,item1_save,item1_save_as,item1_exit;
private JMenuItem item2_copy,item2_cut,item2_paste,item2_all_chosen,item2_retract;
private JMenuItem item4_font,item4_newline;
private JMenuItem item3_about_text;
private JTextArea area;
//private JPopupMenu popupmenu;
private JDialog dialog;
private JLabel label_dialog;
private Dimension framesize;
//private String currentFileName;
//private Boolean motified;
private File file;
public userText(){
super("无标题-记事本");
init();
this.file=null;
}
public userText(String filename)
{
this();
if(filename!=null)
{
this.file = new File(filename);
this.setTitle(filename);
this.area.setText(this.readFromFile());
}
}
public userText(File file)
{
this();
if(file!=null)
{
this.file = file;
this.setTitle(this.file.getName());
this.area.setText(this.readFromFile());
}
}
void init()
{
framesize = new Dimension(480,500);
this.setSize(framesize);
this.setLocation(260,150);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
menubar = new JMenuBar();
this.setJMenuBar(menubar);
menu_file = new JMenu("文件");
menu_editor = new JMenu("编辑");
menu_format = new JMenu("格式");
menu_help = new JMenu("帮助");
menubar.add(menu_file);
menubar.add(menu_editor);
menubar.add(menu_format);
menubar.add(menu_help);
item1_new = new JMenuItem("新建");
item1_open = new JMenuItem("打开");
item1_save = new JMenuItem("保存");
item1_save_as = new JMenuItem("另存为");
item1_exit = new JMenuItem("退出");
menu_file.add(item1_new);
menu_file.addSeparator();
menu_file.add(item1_open);
menu_file.add(item1_save);
menu_file.add(item1_save_as);
menu_file.addSeparator();
menu_file.add(item1_exit);
item2_copy = new JMenuItem("复制");
item2_cut = new JMenuItem("剪切");
item2_paste = new JMenuItem("粘贴");
item2_all_chosen = new JMenuItem("全选");
item2_retract = new JMenuItem("撤消");
item2_copy.addActionListener(this);
item2_cut.addActionListener(this);
item2_paste.addActionListener(this);
item2_all_chosen.addActionListener(this);
item2_retract.addActionListener(this);
menu_editor.add(item2_retract);
menu_editor.addSeparator();
menu_editor.add(item2_copy);
menu_editor.add(item2_cut);
menu_editor.add(item2_paste);
menu_editor.addSeparator();
menu_editor.add(item2_all_chosen);
item4_font = new JMenuItem("字体...");
item4_newline = new JMenuItem("自动换行");
menu_format.add(item4_font);
menu_format.add(item4_newline);
item3_about_text = new JMenuItem("关于记事本");
menu_help.add(item3_about_text);
item3_about_text.addActionListener(this);
area = new JTextArea("Oh,my God!");
dialog = new JDialog(this,"提示");//对话框
dialog.setSize(330,170);
label_dialog = new JLabel("",JLabel.CENTER);
dialog.add(label_dialog);
dialog.setDefaultCloseOperation(HIDE_ON_CLOSE);
area.addMouseListener(this);
/* popupmenu = new JPopupMenu();//设置快捷键;
item2_retract.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
popupmenu.add(item2_retract);
item2_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
popupmenu.add(item2_copy);
item2_cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
popupmenu.add(item2_cut);
item2_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
popupmenu.add(item2_paste);
area.add(popupmenu);*/
this.add(area);
this.setVisible(true);
}
public void writeToFile(String aline)
{
try{
FileWriter fout = new FileWriter(this.file);
fout.write(aline+"\r\n");
fout.close();
}
catch(IOException ioex)
{
return;
}
}
public String readFromFile()
{
try{
FileReader fin = new FileReader(this.file);
BufferedReader bin = new BufferedReader(fin);
String aline="",lines="";
do{
aline = bin.readLine();
if(aline!=null)
lines+=aline+"\r\n";
}while(aline!=null);
bin.close();
fin.close();
return lines;
}
catch(IOException ioex)
{
return null;
}
}
public boolean openDialog()//打开文件
{
FileDialog filedialog = new FileDialog(this,"Open",FileDialog.LOAD);
filedialog.setVisible(true);
if((filedialog.getDirectory()!=null)&&(filedialog.getFile()!=null))
{
this.file = new File(filedialog.getDirectory(),filedialog.getFile());
return true;
}
else
return false;
}
public boolean saveDialog()//保存文件
{
FileDialog filedialog = new FileDialog(this,"SaveAs",FileDialog.SAVE);
filedialog.setFile(this.file.getName());
filedialog.setVisible(true);
if((filedialog.getDirectory()!=null)&&(filedialog.getFile()!=null))
{
this.file = new File(filedialog.getDirectory(),filedialog.getFile()+".txt");
return true;
}
else return false;
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="复制")
area.copy();
if(e.getActionCommand()=="剪切")
area.cut();
if(e.getActionCommand()=="粘贴")
area.paste();
if(e.getActionCommand()=="退出")
System.exit(0);
if(e.getActionCommand()=="打开")
if(this.openDialog())
{
this.setTitle(this.file.getName());
this.area.setText(this.readFromFile());
}
if((e.getActionCommand()=="保存")&&this.file!=null)
//保存,并且非第一次保存时;
this.writeToFile(this.area.getText());
if((e.getActionCommand()=="保存"&&this.file==null)||e.getActionCommand()=="另存为")
//第一次保存,或者单击另存为时...
if(this.saveDialog())
{
this.writeToFile(this.area.getText());
this.setTitle(this.file.getName());
}
if(e.getActionCommand()=="关于记事本")
{
label_dialog.setText("这是本人的第一个java图形程序,如有高见,请多指教!");//+"\n"+"作者"+':'+"严永刚");
dialog.setLocation(this.getX()+100,this.getY()+100);
dialog.setVisible(true);
}
}
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public static void main(String [] args){
new userText();
}
}