📄 homework1.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.datatransfer.*;
public class homework1 extends Frame implements ActionListener
{
private MenuItem fileNew = new MenuItem("New");
private MenuItem fileOpen = new MenuItem("Open");
private MenuItem fileSave = new MenuItem("Save");
private MenuItem fileSave1 = new MenuItem("Save as");
private MenuItem fileExit = new MenuItem("Exit");
private MenuItem editCut = new MenuItem("Cut");
private MenuItem editCopy = new MenuItem("Copy");
private MenuItem editPaste = new MenuItem("Paste");
private TextArea text = new TextArea();
Toolkit toolKit=Toolkit.getDefaultToolkit();
Clipboard clipBoard=toolKit.getSystemClipboard();
boolean isNewFile=true;
File currentFile;
String oldValue;
String fileName = new String("");
private int k = 1;
private int x = 1;
private class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
}
public homework1()
{
super("NotePad");
Menu file = new Menu("File");
Menu edit = new Menu("Edit");
file.add(fileNew); fileNew.setEnabled(true);
file.add(fileOpen); fileOpen.setEnabled(true);
file.add(fileSave); fileSave.setEnabled(true);
file.add(fileSave1); fileSave1.setEnabled(true);
file.addSeparator();
file.add(fileExit); fileExit.setEnabled(true);
edit.add(editCut); editCut.setEnabled(true);
edit.add(editCopy); editCopy.setEnabled(true);
edit.add(editPaste); editPaste.setEnabled(true);
MenuBar bar = new MenuBar();
bar.add(file);
bar.add(edit);
setMenuBar(bar);
fileNew.addActionListener(this);
fileExit.addActionListener(this);
fileOpen.addActionListener(this);
fileSave.addActionListener(this);
fileSave1.addActionListener(this);
editCut.addActionListener(this);
editCopy.addActionListener(this);
editPaste.addActionListener(this);
setLayout(new BorderLayout());
add("Center",text);
addWindowListener(new WindowCloser());
setSize(400,300);
setVisible(true);
}
public void saveFile(String file)
{
try
{
FileWriter fw = new FileWriter(file);
PrintWriter out = new PrintWriter(new BufferedWriter(fw));
String str = text.getText();
out.println(str);
out.close();
}
catch(IOException ioe)
{
System.err.println(ioe);
}
}
public void loadFile(String file)
{
text.setText("");
try
{
BufferedReader in = new BufferedReader(new FileReader(file));
String line;
while((line = in.readLine()) != null)
text.append(line + "\n");
in.close();
text.setCaretPosition(0);
}
catch (IOException ioe)
{
System.err.println(ioe);
}
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == fileNew)
{
text.requestFocus();
String currentValue = text.getText();
boolean isChanged = (currentValue.equals(oldValue))?false:true;
if (isChanged)
{
SaveDlg dlg = new SaveDlg(this,"友情提示:","文件已改变,保存不?",3);
if (dlg.isOk)
{
if (k == 1 && x == 1)
{
FileDialog fd = new FileDialog(this,"open a file",FileDialog.SAVE);
fd.setVisible(true);
if (fd.getFile() != null)
{
File file = new File(fd.getDirectory() + fd.getFile());
if (file.exists())
{
SaveDlg dlg1 = new SaveDlg(this,"对不起","文件已存在啦",1);
}
else
{
saveFile(file.toString());
}
}
fd.dispose();
}
else
{
saveFile(fileName);
}
}
if (dlg.isNo)
{
text.setText("");
}
}
else
text.setText("");
}
if (e.getSource() == fileOpen)
{
FileDialog fd = new FileDialog(this,"打开",FileDialog.LOAD);
fd.setVisible(true);
if (fd.getFile() != null)
{
File file = new File(fd.getDirectory() + fd.getFile());
if (file.exists())
{
loadFile(file.toString());
fileName = file.toString();
x = 0;
oldValue = text.getText();
}
else
text.setText("File name:" + file + "invalid");
}
fd.dispose();
}
if (e.getSource() == fileSave)
{
if (k == 0 || x == 0)
{
oldValue = text.getText();
saveFile(fileName);
}
else
{
oldValue = text.getText();
FileDialog fd = new FileDialog(this,"保存",FileDialog.SAVE);
fd.setVisible(true);
File file = new File(fd.getDirectory()+fd.getFile());
saveFile(file.toString());
k=0;
fileName = file.toString();
fd.dispose();
}
}
if (e.getSource() == fileSave1)
{
FileDialog fd = new FileDialog(this,"另存为",FileDialog.SAVE);
fd.setVisible(true);
File file = new File(fd.getDirectory()+fd.getFile());
saveFile(file.toString());
fd.dispose();
fileName = file.toString();
}
if (e.getSource() == fileExit)
{
text.requestFocus();
String currentValue = text.getText();
boolean isChanged = (currentValue.equals(oldValue))?false:true;
if (isChanged)
{
SaveDlg dlg = new SaveDlg(this,"友情提示:","文件已改变,保存不?",3);
if (dlg.isOk)
{
if (k == 0 || x == 0)
{
oldValue = text.getText();
saveFile(fileName);
}
else
{
k = 0;
FileDialog fd = new FileDialog(this,"open a file",FileDialog.SAVE);
fd.setVisible(true);
if (fd.getFile() != null)
{
File file = new File(fd.getDirectory() + fd.getFile());
if (file.exists())
{
SaveDlg dlg1 = new SaveDlg(this,"对不起","文件已存在啦",2);
}
else
{
saveFile(file.toString());
}
fd.dispose();
}
}
}
}
System.exit(0);
}
if(e.getSource() == editCut)
{
text.requestFocus();
String str=text.getSelectedText();
StringSelection selection=new StringSelection(str);
clipBoard.setContents(selection,null);
text.replaceRange("",text.getSelectionStart(),text.getSelectionEnd());
}
if(e.getSource() == editCopy)
{
text.requestFocus();
String str=text.getSelectedText();
StringSelection selection=new StringSelection(str);
clipBoard.setContents(selection,null);
}
if(e.getSource() == editPaste)
{
text.requestFocus();
Transferable contents=clipBoard.getContents(this);
if(contents==null) return;
String str;
str="";
try
{
str=(String)contents.getTransferData(DataFlavor.stringFlavor);
}
catch(Exception exception)
{
}
text.replaceRange(str,text.getSelectionStart(),text.getSelectionEnd());
}
}
public static void main(String[] args)
{
homework1 zy = new homework1();
}
}
class SaveDlg extends Dialog implements ActionListener
{
private Button okay = new Button("ok");
private Button cancel = new Button("Cancel");
private Button no = new Button("no");
private Label label = new Label("");
public boolean isOk = false;
public boolean isNo = false;
private class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent we)
{
hide();
}
}
public SaveDlg(Frame parent)
{
this(parent,"Fail Dialog","haha",2);
}
public SaveDlg(Frame parent, String title, String question, int a)
{
super(parent,title,true);
label.setText(question);
if (a == 1)
{
setup1();
okay.addActionListener(this);
cancel.addActionListener(this);
}
else
{
setup();
okay.addActionListener(this);
cancel.addActionListener(this);
no.addActionListener(this);
}
okay.addActionListener(this);
cancel.addActionListener(this);
no.addActionListener(this);
addWindowListener(new WindowCloser());
setSize(200,100);
setVisible(true);
}
private void setup()
{
Panel buttons = new Panel();
buttons.setLayout(new FlowLayout());
buttons.add(okay);
buttons.add(no);
buttons.add(cancel);
setLayout(new BorderLayout());
add("Center",label);
add("South",buttons);
}
private void setup1()
{
Panel buttons = new Panel();
buttons.setLayout(new FlowLayout());
buttons.add(okay);
setLayout(new BorderLayout());
add("Center",label);
add("South",buttons);
}
public void actionPerformed(ActionEvent ae)
{
isOk = (ae.getSource() == okay);
isNo = (ae.getSource() == no);
setVisible(false);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -