/*
* 自己写的一个小记事本,
* 为了方便编译,把一些用到的东西都写成了内部类了,
* 不过感觉还有很多方面欠缺,谢谢指正!
*
*
*
* **/
import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
public class EditFrame extends Frame{
// 添加TextArea
TextArea ta=new TextArea();
File currentfile=null;
public void creatFrame(){
//设置菜单栏
MenuBar mb=new MenuBar();
Menu menufile =new Menu("File");
Menu menuedit =new Menu("Edit");
Menu menuhelp=new Menu("Help");
MenuItem fileitemnew=new MenuItem("New");
MenuItem fileitemopen=new MenuItem("Open");
MenuItem fileitemsave=new MenuItem("Save");
MenuItem fileitemsaveas=new MenuItem("Save As");
MenuItem fileitemexit=new MenuItem("Exit");
fileitemopen.addActionListener(new OpenAction(this));
fileitemexit.addActionListener(new ExitAction());
fileitemsave.addActionListener(new SaveAction());
fileitemnew.addActionListener(new NewAction(this));
fileitemsaveas.addActionListener(new SaveAsAction(this));
menufile.add(fileitemnew);
menufile.add(fileitemopen);
menufile.add(fileitemsave);
menufile.add(fileitemsaveas);
menufile.add(fileitemexit);
MenuItem edititemcopy=new MenuItem("Copy");
MenuItem edititemcut=new MenuItem("Cut");
MenuItem edititempaste=new MenuItem("Paste");
edititempaste.addActionListener(new PasteAction());
edititemcut.addActionListener(new CutAction());
edititemcopy.addActionListener(new CopyAction());
menuedit.add(edititemcopy);
menuedit.add(edititemcut);
menuedit.add(edititempaste);
MenuItem helpitemhelp=new MenuItem("Help");
MenuItem helpitemabout=new MenuItem("About");
helpitemhelp.addActionListener(new HelpAction());
helpitemabout.addActionListener(new HelpAction());
menuhelp.add(helpitemhelp);
menuhelp.add(helpitemabout);
mb.add(menufile);
mb.add(menuedit);
mb.add(menuhelp);
//设置Frame
this.setTitle("MenuTest");
this.setSize(600,500);
this.setLocation(200, 200);
this.setResizable(false);
this.setMenuBar(mb);
this.add(ta);
this.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
this.setVisible(true);
}
public static void main(String[] args){
EditFrame f=new EditFrame();
f.creatFrame();
}
class OpenAction implements ActionListener {
Frame f;
public OpenAction(Frame f){
this.f=f;
}
public void actionPerformed(ActionEvent e) {
// JFileChooser jfc=new JFileChooser();
// jfc.setVisible(true);
// System.out.println("asdg");
/*
* FileDialog(Frame parent)
创建一个文件对话框,用于加载文件。
FileDialog(Frame parent, String title)
创建一个具有指定标题的文件对话框窗口,用于加载文件。
FileDialog(Frame parent, String title, int mode)
创建一个具有指定标题的文件对话框窗口,用于加载或保存文件。
*
mode:
static int LOAD 0
此常量值指示文件对话框窗口的作用是查找要读取的文件。
static int SAVE 1
此常量值指示文件对话框窗口的作用是查找要写入的文件。
* */
FileDialog fd=new FileDialog(f,"Open",0);//0 打开对话框
//FileDialog fd=new FileDialog(f,"Open",1);// 1 保存对话框
fd.setVisible(true);
if(fd.getFile()==null)return ;
File choosefile=new File(fd.getDirectory(),fd.getFile());
currentfile=choosefile;
try {
FileInputStream fis=new FileInputStream(choosefile);
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(isr);
String linestring;
/*怎么样换行???*/
while((linestring=br.readLine())!=null){//全部读取
ta.append(linestring+"\n");
//System.out.println(linestring);
}
//br.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
class ExitAction implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
class NewAction implements ActionListener{
Frame f;
public NewAction(Frame f){
this.f=f;
}
public void actionPerformed(ActionEvent arg0) {
FileDialog fd=new FileDialog(f,"New",FileDialog.SAVE);
fd.setVisible(true);
if(fd.getFile()==null)return;
currentfile=new File(fd.getDirectory(),fd.getFile());
//System.out.println("asdg");
}
}
class SaveAction implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
if(currentfile!=null){
FileOutputStream fos;
try {
fos = new FileOutputStream(currentfile);
OutputStreamWriter osw=new OutputStreamWriter(fos);
BufferedWriter bw=new BufferedWriter(osw);
try {
bw.write(ta.getText());
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("asdg");
}else return;
}
}
class SaveAsAction implements ActionListener{
Frame f;
public SaveAsAction(Frame f){
this.f=f;
}
public void actionPerformed(ActionEvent arg0) {
FileDialog fd=new FileDialog(f,"Save As",FileDialog.SAVE);
fd.setVisible(true);
currentfile=new File(fd.getDirectory(),fd.getFile());
SaveAction save=new SaveAction();
save.actionPerformed(arg0);
}
}
// static class SetMenuState{
//
// MenuBar mb;
// public SetMenuState(MenuBar mb){
// this.mb=mb;
//
// }
//
// public void SetMenu(){
//
// int i;
// int j;
// for(i=0;i<mb.getMenuCount();i++){
// for(j=0;j<mb.getMenu(i).getItemCount();j++){
// mb.getMenu(i).getItem(j).getLabel();break;
// }
// }
//
// }
//
//
//
//
// }
class PasteAction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
Clipboard clipbd=getToolkit().getSystemClipboard();//得到系统剪切板内容
Transferable clipData =clipbd.getContents(EditFrame.this);//??????
try {
String clipString =
(String)clipData.
getTransferData(
DataFlavor.stringFlavor);
ta.replaceRange(clipString,
ta.getSelectionStart(),
ta.getSelectionEnd());
} catch(Exception ex) {
System.out.println("not String flavor");
}
}
}
class CutAction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
StringSelection clipstring=new StringSelection(ta.getSelectedText());
Clipboard clipbd=getToolkit().getSystemClipboard();
clipbd.setContents(clipstring,clipstring);
ta.replaceRange("", ta.getSelectionStart(), ta.getSelectionEnd());
}
}
class CopyAction implements ActionListener{
public void actionPerformed(ActionEvent arg0){
Clipboard cb=getToolkit().getSystemClipboard();
StringSelection clipstring =new StringSelection(ta.getSelectedText());
cb.setContents(clipstring, clipstring);
}
}
class HelpAction implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
final Dialog help=new Dialog(EditFrame.this,"Help");
Label lab1=new Label("个人BLOG:http://hi.baidu.com/gosanye/blog");
help.setLayout(new BorderLayout());
help.add(lab1,BorderLayout.CENTER);
help.setSize(300,80);
help.setResizable(false);
help.setLocation(400,400);
help.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
help.setVisible(false);
}
});
help.setVisible(true);
}
}
}
用java写的一个小记事本
最新推荐文章于 2024-04-20 09:00:00 发布