1.[代码][Java]代码
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.event.*;
import javax.print.*;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.MediaSizeName;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.plaf.FileChooserUI;
import javax.swing.undo.UndoableEdit;
import java.io.*;
public class Notepad extends JFrame {
/**
* @param args
*/
public JTextArea jta=null; //中间的文本区域
private File selectedFile=null;
private JFileChooser chooser=null; //文件选择器
private UndoableEdit edit; //设置还原功能
private boolean canUndo=false;
private JMenuItem jmiUndoItem; //撤销的菜单
private Clipboard clip=null; //粘贴板
private JDialog jdSearchDialog;
public Notepad()
{
super("Notepad Beta");
super.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
chooser=new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
clip=Toolkit.getDefaultToolkit().getSystemClipboard();
jta=new JTextArea();
jta.setWrapStyleWord(true);
jta.setLineWrap(true);
//*****************************右键弹出功能
final JPopupMenu jpMenu=new JPopupMenu();
JMenuItem jpItemUndo=new JMenuItem("撤销(U) ");
JMenuItem jpItemCut=new JMenuItem("剪切(T) ");
JMenuItem jpItemCopy=new JMenuItem("复制(C) ");
JMenuItem jpItemPaste=new JMenuItem("粘贴(P) ");
jpMenu.add(jpItemUndo);
jpMenu.add(new JPopupMenu.Separator());
jpMenu.add(jpItemCut);
jpMenu.add(jpItemCopy);
jpMenu.add(jpItemPaste);
jpMenu.setBorder(new BevelBorder(BevelBorder.RAISED));
jta.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e)
{
if(e.isMetaDown())
{
if(!jpMenu.isVisible())
{
jpMenu.show(e.getComponent(),e.getX(),e.getY());
}
}
else {
jpMenu.setVisible(false);
}
}
});
//*****************************实现撤销功能
jta.getDocument().addUndoableEditListener(new UndoableEditListener() {
@Override
public void undoableEditHappened(UndoableEditEvent e) {
// TODO Auto-generated method stub
edit=e.getEdit();
if(edit!=null)
{
canUndo=edit.canUndo();
}
else
{
canUndo=false;
}
}
});
//**********************************设置相关菜单和事件监听
Container content=getContentPane();
JMenuBar jmb=new JMenuBar();
JMenu jmFile=new JMenu("文件(F)");
jmFile.setMnemonic('f');
JMenu jmEdit=new JMenu("编辑(E)");
jmEdit.setMnemonic('e');
JMenu jmStyle=new JMenu("格式(O)");
jmStyle.setMnemonic('e');
JMenu jmView=new JMenu("查看(V)");
jmView.setMnemonic('v');
JMenu jmHelp=new JMenu("帮助(H)");
jmHelp.setMnemonic('h');
jmb.add(jmFile);
jmb.add(jmEdit);
jmb.add(jmStyle);
jmb.add(jmView);
jmb.add(jmHelp);
setJMenuBar(jmb);
JMenuItem jmiNewItem=new JMenuItem("新建(N) Ctrl+N");
jmiNewItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(!jta.getText().equals(""))
{
int confirm=JOptionPane.showConfirmDialog(Notepad.this, "是否保存(S) Ctrl+S文件?");
if(confirm==JOptionPane.OK_OPTION)
{
if(selectedFile!=null)
{
try {
FileWriter fw=new FileWriter(selectedFile);
fw.write(jta.getText());
fw.close();
} catch (Exception e) {
// TODO: handle exce