当前位置:文档之家› JAVA课程设计 记事本

JAVA课程设计 记事本

import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import javax.swing.event.*;
import javax.swing.undo.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
public class Notepad extends JFrame implements ActionListener,MouseListener{
JMenuBar bar;
JMenu file , edit, help;
JMenuItem fnew , fopen, fsave, fexit;
JMenuItem ecut, ecopy, epaste;
JMenuItem mh1,mh2;
JTextArea ta;
JLabel statusLabel;
File file2 = null;
boolean isNewfile = true;
JPanel p1;
JFileChooser filechooser = new JFileChooser();
Toolkit toolKit = Toolkit.getDefaultToolkit();
Clipboard clipBoard = toolKit.getSystemClipboard();
String oldValue;
Notepad(){
p1 = new JPanel();
p1.setLayout(new BorderLayout());
bar = new JMenuBar();
file = new JMenu("文件");
fnew = new JMenuItem("新建");
fopen = new JMenuItem("打开");
fsave = new JMenuItem("保存");
fexit = new JMenuItem("退出");
file.add(fnew);
file.add(fopen);
file.add(fsave);
file.addSeparator();
file.add(fexit);
fnew.addActionListener(this);
fopen.addActionListener(this);
fsave.addActionListener(this);
fexit.addActionListener(this);

edit = new JMenu("编辑");
ecut = new JMenuItem("剪切");
ecopy = new JMenuItem("复制");
epaste = new JMenuItem("粘贴");
edit.add(ecut);
edit.add(ecopy);
edit.add(epaste);
ecopy.addActionListener(this);
ecut.addActionListener(this);
epaste.addActionListener(this);
help = new JMenu("帮助");
mh1 = new JMenuItem("关于记事本");
mh1.addActionListener(this);
help.add(mh1);
bar.add(file);
bar.add(edit);
bar.add(help);
setJMenuBar(bar);
ta = new JTextArea();
ta.addMouseListener(this);
p1.add(ta,BorderLayout.CENTER);
statusLabel = new JLabel("按Ctrl+F1获取帮助");
p1.add(statusLabel, BorderLayout.SOUTH);
this.addWindowListener(new Win());
add(p1);
setVisible(true);
setSize(400,500);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == fnew ) {//新建
ta.requestFocusInWindow();
Object[] options = { "确定", "取消" };
int s = JOptionPane.showOptionDialog(null, "请注意保存文档!按“确定”新建文件",
"警告!", JOptionPane.DEFAULT_OPTION,
JO

ptionPane.WARNING_MESSAGE, null, options, options[0]);
if (s == JOptionPane.YES_OPTION)
ta.setText("");
isNewfile = true;
statusLabel.setText("空白文档");
file2 = null;
}else if (e.getSource() == fopen) {
ta.requestFocusInWindow();
if (file != null)
filechooser.setSelectedFile(file2);
filechooser.addChoosableFileFilter(new JAVAFileFilter("txt"));
int returnVal = filechooser.showOpenDialog(Notepad.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file2 = filechooser.getSelectedFile();
openFile(ta);
isNewfile = false;
statusLabel.setText("当前打开文件:" + file2.getAbsoluteFile()
+ " 行:" + Integer.toString(ta.getRows()) + " 列:"
+ Integer.toString(ta.getColumns()));
ta.setCaretPosition(0);
}
} else if (e.getSource() == fsave ) {
ta.requestFocusInWindow();
saveFile(ta);
}else if (e.getSource() == fexit) {
ta.requestFocusInWindow();
System.exit(0);
}else if (e.getSource() == ecut ) {
ta.requestFocusInWindow();
ta.cut();
checkMenuItemEnabled();
} else if (e.getSource() == ecopy ) {
ta.requestFocusInWindow();
ta.copy();
checkMenuItemEnabled();
} else if (e.getSource() == epaste) {
ta.requestFocusInWindow();
ta.paste();
checkMenuItemEnabled();
}else if (e.getSource() == mh1) {
helpFrame();
}
}
void openFile(JTextArea text) {
try {
FileReader fr = new FileReader(file2);
int len = (int) file2.length();
char[] buffer = new char[len];
fr.read(buffer, 0, len);
fr.close();
text.setText(new String(buffer));
} catch (Exception e) {
e.printStackTrace();
}
}
void saveFile(JTextArea text) {
ta.requestFocusInWindow();
if (isNewfile) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.addChoosableFileFilter(new JAVAFileFilter("txt"));
fileChooser.setApproveButtonText("确定");
fileChooser.setDialogTitle("另存为");
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.CANCEL_OPTION) {
statusLabel.setText("没有选择任何文件");
return;
}
File saveFileName = fileChooser.getSelectedFile();
if (saveFileName == null || saveFileName.getName().equals(""))
JOptionPane.showMessageDialog(this, "不合法的文件名", "不合法的文件名",
JOptionPane.ERROR_MESSAGE);
else {
try {
FileWriter fw = new FileWriter(saveFileName+".txt");
BufferedWriter bfw = new BufferedWriter(fw);
bfw.write(ta.getText(), 0, ta.getText().length());
bfw.flush();
fw.close();
isNewfile = false;
file2 = saveFileName;
oldValue = ta.getText();
statusLabel.setText(" 当前打开文件:"
+ saveFileName.getAbsoluteFile());
} catch (IOException ioException) {
}

}
} else {
try {
FileWriter fw = new FileWriter(file2);
BufferedWriter bfw = new BufferedWriter(fw);
bfw.write(ta.getText(), 0, ta.getText().length());
bfw.flush();
fw.close();
} catch (IOException ioException) {
}
}
}
public void checkMenuItemEnabled() {
String selectText = ta.getSelectedText();
if (selectText == null) {
ecut.setEnabled(false);
ecopy.setEnabled(false);
} else {
ecut.setEnabled(true);
ecopy.setEnabled(true);
}
Transferable contents = clipBoard.getContents(this);
if (contents == null) {
epaste.setEnabled(false);
} else {
epaste.setEnabled(true);
}
}
void helpFrame() {
String help = "该记事本仅限湖南商学院信息学院使用!\n"
+"该记事本源代码来源于信管0822班—陈瑶!\n"
+"该记事本程序暂无帮助,您可以参考WindowsXP的记事本帮助程序!\n"
+ "欢迎和信管0822班—陈瑶联系交流,联系方式:329317062@https://www.doczj.com/doc/6715090198.html,!\n";
JOptionPane.showConfirmDialog(null, help, "帮助",
JOptionPane.DEFAULT_OPTION, https://www.doczj.com/doc/6715090198.html,RMATION_MESSAGE);
}
public void mouseClicked(MouseEvent e) {
checkMenuItemEnabled();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
checkMenuItemEnabled();
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
Font font = new Font("Dialog", Font.PLAIN, 12);
UIManager.put("MenuBar.font", font);
UIManager.put("MenuItem.font", font);
UIManager.put("Menu.font", font);
UIManager.put("Dialog.font", font);
UIManager.put("JOptionPane.font", font);
} catch (Exception e) {
}
Notepad frm = new Notepad();
frm.addWindowListener(new Win());
}
}
class JAVAFileFilter extends FileFilter{
String ext;
public JAVAFileFilter(String ext)
{
this.ext = ext;
}
public boolean accept(File file)
{
if (file.isDirectory())
return true;
String fileName = file.getName();
int index = https://www.doczj.com/doc/6715090198.html,stIndexOf('.');
if (index > 0 && index < fileName.length()-1) {
String extension = fileName.substring(index+1).toLowerCase();
if (extension.equals(ext))
return true;
}
return false;
}
public String getDescription(){
if (ext.equals("txt"))
return "记事本文件(*.txt)";
return "";
}
}
class Win extends WindowAdapter {

public void windowClosing(WindowEvent e) {
System.exit(0);
}
}

相关主题
文本预览
相关文档 最新文档