当前位置:首页 > 代码 > 正文

记事本撤销代码java(记事本取消撤销)

admin 发布:2022-12-19 23:21 190


本篇文章给大家谈谈记事本撤销代码java,以及记事本取消撤销对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

【紧急求助】求简单JAVA记事本程序

要求太高了,满足不了:

=================

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.swing.*;

import javax.swing.event.*;

@SuppressWarnings("serial")

public class Notepad extends JFrame {

JTextArea text = new JTextArea(); //字段摘要

JMenuBar menubar = new JMenuBar();

JMenu files = new JMenu("文件(F)");

JMenu edit = new JMenu("编辑(E)");

JMenu formats = new JMenu("格式(O)");

JMenu view = new JMenu("查看(V)");

JMenu helps = new JMenu("帮助(H)");

JMenuItem newFile = new JMenuItem("新建(N)");

JMenuItem open = new JMenuItem("打开(O)...");

JMenuItem save = new JMenuItem("保存(S)");

JMenuItem saveAs = new JMenuItem("另存为(A)...");

JMenuItem exit = new JMenuItem("退出(X)");

JMenuItem undo = new JMenuItem("撤销(U)");

JMenuItem cut = new JMenuItem("剪切(T)");

JMenuItem copy = new JMenuItem("复制(C)");

JMenuItem paste = new JMenuItem("粘贴(P)");

JMenuItem delete = new JMenuItem("删除(L)");

JMenuItem find = new JMenuItem("查找(F)...");

JMenuItem findNext = new JMenuItem("查找下一个(N)");

JMenuItem replace = new JMenuItem("替换(R)...");

JMenuItem selectAll = new JMenuItem("全选(A)");

JMenuItem timeDate = new JMenuItem("时间/日期(D)");

JCheckBoxMenuItem lineWrap = new JCheckBoxMenuItem("自动换行(M)");

JMenuItem fonts = new JMenuItem("字体(F)...");

JCheckBoxMenuItem state = new JCheckBoxMenuItem("状态栏(S)");

JMenuItem help = new JMenuItem("帮助主题(H)");

JMenuItem about = new JMenuItem("关于记事本(A)");

String name; //param name 保存标题名

String openedPath = null; //param openedPath 系统保存的打开路径

boolean isChangered = false; //param isChangered text是否被改动过,true表示改过,false表示未改动过

boolean isOpened = false; //param isOpened true表示打开的text,false表示新建的text

String findStr = null; //param findStr 保存要查找的字符串

public Notepad(String name) { //构造函数

super(name);

this.name = name;

int x,y;

Dimension size = Toolkit.getDefaultToolkit().getScreenSize();

x = size.width;

y = size.height;

this.setSize(600, 500);

this.setLocation((x-600)/2, (y-500)/2);

windowAdapter winAda = new windowAdapter();

this.addWindowListener(winAda);

menubar.add(files); //添加控键

menubar.add(edit);

menubar.add(formats);

menubar.add(view);

menubar.add(helps);

files.add(newFile);

files.add(open);

files.add(save);

files.add(saveAs);

files.addSeparator();

files.add(exit);

edit.add(undo);

edit.addSeparator();

edit.add(cut);

edit.add(copy);

edit.add(paste);

edit.add(delete);

edit.addSeparator();

edit.add(find);

edit.add(findNext);

edit.add(replace);

edit.addSeparator();

edit.add(selectAll);

edit.add(timeDate);

formats.add(lineWrap);

formats.add(fonts);

view.add(state);

helps.add(help);

helps.addSeparator();

helps.add(about);

this.setJMenuBar(menubar);

this.add(new JScrollPane(text));

DocumentListener docLis = new documentListener();

text.getDocument().addDocumentListener(docLis);

files.setMnemonic('F'); //添加助记符

edit.setMnemonic('E');

formats.setMnemonic('O');

view.setMnemonic('V');

helps.setMnemonic('H');

newFile.setMnemonic('N');

open.setMnemonic('O');

save.setMnemonic('S');

saveAs.setMnemonic('A');

exit.setMnemonic('X');

undo.setMnemonic('U');

cut.setMnemonic('T');

copy.setMnemonic('C');

paste.setMnemonic('P');

delete.setMnemonic('L');

find.setMnemonic('F');

findNext.setMnemonic('N');

replace.setMnemonic('R');

selectAll.setMnemonic('A');

timeDate.setMnemonic('D');

lineWrap.setMnemonic('M');

fonts.setMnemonic('F');

state.setMnemonic('S');

help.setMnemonic('H');

about.setMnemonic('A');

//添加快捷键

newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));

open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));

save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));

exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK));

undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));

cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));

copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));

paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));

find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));

replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));

selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));

findNext.setAccelerator(KeyStroke.getKeyStroke("F3"));

timeDate.setAccelerator(KeyStroke.getKeyStroke("F5"));

actionListener listener = new actionListener(); //增加监听

newFile.addActionListener(listener);

open.addActionListener(listener);

save.addActionListener(listener);

saveAs.addActionListener(listener);

exit.addActionListener(listener);

undo.addActionListener(listener);

cut.addActionListener(listener);

copy.addActionListener(listener);

paste.addActionListener(listener);

delete.addActionListener(listener);

find.addActionListener(listener);

findNext.addActionListener(listener);

replace.addActionListener(listener);

selectAll.addActionListener(listener);

timeDate.addActionListener(listener);

lineWrap.addActionListener(listener);

fonts.addActionListener(listener);

state.addActionListener(listener);

help.addActionListener(listener);

about.addActionListener(listener);

//undo.setEnabled(false); //设置成不可用

//delete.setEnabled(false);

//find.setEnabled(false);

//findNext.setEnabled(false);

//replace.setEnabled(false);

fonts.setEnabled(false);

state.setEnabled(false);

//help.setEnabled(false);

}

/**

* 专门进行保存处理的函数,通过判断两个变量判断是:保存,另存为,不作任何操作

* @param isChangered text是否被改动过,true表示改过,false表示未改动过

* @param isOpened true表示打开的text,false表示新建的text

* @param openedPath 如果文档是打开的或已经保存,则有保存的路径,

*

*

* | true | false

* -----------------------------------------

* isChangered | 文档动过 | 文档未动过

* | |

* isOpened | 文档是打开的 | 文档是新建的

*

*

*/

void save(boolean isChangered, boolean isOpened) {

String savePath = new String();

if (isChangered isOpened) { // 文件保存

if (JOptionPane.showConfirmDialog(Notepad.this, "需要保存文件吗?","保存提示", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {

try {

savePath = openedPath;

FileOutputStream fos = new FileOutputStream(savePath);

BufferedOutputStream bufferedOutput = new BufferedOutputStream(fos);

bufferedOutput.write(text.getText().getBytes());

bufferedOutput.close();

fos.close();

this.isChangered = false;

this.isOpened = true;

} catch (Exception ex) {

ex.printStackTrace();

}

}

} else if (isChangered !isOpened) { //文件另存为

savePath = null;

if (JOptionPane.showConfirmDialog(Notepad.this, "需要保存文件吗?","另存为提示", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {

FileDialog saveFile = new FileDialog(Notepad.this,"保存文件...", FileDialog.SAVE);

saveFile.setVisible(true);

if (saveFile.getDirectory() != null saveFile.getFile() != null) {

savePath = saveFile.getDirectory() + saveFile.getFile();

}

if (savePath != null) {

try {

FileOutputStream fos = new FileOutputStream(savePath);

BufferedOutputStream bufferedOutput = new BufferedOutputStream(fos);

bufferedOutput.write(text.getText().getBytes());

bufferedOutput.close();

fos.close();

openedPath = savePath;

this.isChangered = false;

this.isOpened = true;

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

}

}

class windowAdapter extends WindowAdapter { //windows监听类

public void windowClosing(WindowEvent e) {

save(isChangered,isOpened);

System.exit(0);

}

}

class documentListener implements DocumentListener { //文档监听接口,判断文档是否被改过

public void changedUpdate(DocumentEvent e) {

isChangered = true;

}

public void insertUpdate(DocumentEvent e) {

isChangered = true;

}

public void removeUpdate(DocumentEvent e) {

isChangered = true;

}

}

class actionListener implements ActionListener { //创建活动监听类

public void actionPerformed(final ActionEvent e) {

Object o = e.getSource();

if (o == newFile) { //新建文件

save(isChangered, isOpened);

text.setText("");

Notepad.this.setTitle(name);

isOpened = false;

isChangered = false;

openedPath = null;

}

else if (o == exit){ //退出

save(isChangered, isOpened);

System.exit(0);

}

else if (o == cut) //剪切

text.cut();

else if (o == copy) //拷贝

text.copy();

else if (o == paste) //粘贴

text.paste();

else if (o == selectAll) //选择全部

text.selectAll();

else if (o == timeDate) { //在文件中输出当前时间

Date nowTime = new Date();

SimpleDateFormat times = new SimpleDateFormat("HH:mm yyyy-MM-dd");

text.insert(times.format(nowTime), text.getCaretPosition());

}

else if (o == lineWrap) //自动换行设置

text.setLineWrap(!text.getLineWrap());

else if (o == about) {

String message = "----记事本----\n版本:Version 1.0\n 感谢您的使用!";

JOptionPane.showMessageDialog(Notepad.this, message, "关于...",JOptionPane.PLAIN_MESSAGE);

}

else if (o == open) { //打开文件

save(isChangered, isOpened);

FileDialog openFile = new FileDialog(Notepad.this, "打开文件...",FileDialog.LOAD);

openFile.setVisible(true);

String filePath = null;

if(openFile.getDirectory()!=null openFile.getFile()!=null){

filePath = openFile.getDirectory() + openFile.getFile();

}

if (filePath!=null){

try { //进行文件操作

FileInputStream fileInput = new FileInputStream(new File(filePath));

BufferedInputStream bufferedInput = new BufferedInputStream(fileInput);

byte[] contents = new byte[bufferedInput.available()];

bufferedInput.read(contents);

text.setText(new String(contents));

text.setSelectionStart(0);

text.setSelectionEnd(0);

//Notepad.this.setTitle(openFile.getFile());

openedPath = filePath;

bufferedInput.close();

fileInput.close();

isChangered = false;

isOpened = true;

Notepad.this.setTitle(openedPath+" "+name);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e2) {

e2.printStackTrace();

}

}

}

else if (o == save) { //保存

if(text.getDocument().getLength()==0isOpenedisChangered)

save(true, true); //执行保存

else if(text.getDocument().getLength()==0!isOpened)

save(true, false); //执行另存为

else

save(isChangered, isOpened);

}

else if (o == saveAs){ //另存为

save(true, false);

}

else if(o == delete){

int start;

int end;

start = text.getSelectionStart();

end = text.getSelectionEnd();

text.replaceRange("", start, end);

}

else if (o == find|| o ==findNext){ //查找和查找下一个

if(findStr==null || o==find){

findStr = JOptionPane.showInputDialog(Notepad.this, "请输入要找的字符串!");

if ((findStr!=null)!findStr.equals("")){

int position =text.getText().indexOf(findStr) ;

if(position!=-1){

text.setSelectionStart(position);

text.setSelectionEnd(position+findStr.length());

}

else JOptionPane.showMessageDialog(Notepad.this, "没有你要查找的字符串!");

}else

JOptionPane.showMessageDialog(Notepad.this, "必须输入待查找的字符串!");

}else {

if ((findStr!=null)!findStr.equals("")) {

int position = text.getText().indexOf(findStr, text.getSelectionStart()+1) ;

if(position!=-1){

text.setSelectionStart(position);

text.setSelectionEnd(position+findStr.length());

}

else JOptionPane.showMessageDialog(Notepad.this, "不存在要找的字符串!");

}else

JOptionPane.showMessageDialog(Notepad.this, "必须要输入字符串!");

}

}

else if (o == replace){ //替代

String findStr = null;

String replaceStr;

String str;

int position;

findStr = JOptionPane.showInputDialog(Notepad.this, "请输入要替换的字符串!");

if ((findStr!=null)!findStr.equals("")) {

position = text.getText().indexOf(findStr);

if (position != -1) {

text.setSelectionStart(position);

text.setSelectionEnd(position + findStr.length());

replaceStr = JOptionPane.showInputDialog(Notepad.this,"请输入替换的字符串!");

if(replaceStr!=null){

str = text.getText().replace(findStr, replaceStr);

text.setText(str);

}

}

else JOptionPane.showMessageDialog(Notepad.this, "没有你要替换的字符串");

} else

JOptionPane.showMessageDialog(Notepad.this, "没有你想替换的的字符!");

}

else if(o == undo){ //撤销

if(openedPath==null){

text.setText("");

isChangered = false;

}

else {

try { //进行文件操作

FileInputStream fileInput = new FileInputStream(new File(openedPath));

BufferedInputStream bufferedInput = new BufferedInputStream(fileInput);

byte[] contents = new byte[bufferedInput.available()];

bufferedInput.read(contents);

text.setText(new String(contents));

bufferedInput.close();

fileInput.close();

isChangered = false;

isOpened = true;

Notepad.this.setTitle(openedPath+" "+name);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e2) {

e2.printStackTrace();

}

}

}

else if (o == help) { //帮助主题

// private static final String WIN_ID = "Windows";

// The default system browser under windows.

final String WIN_PATH = "rundll32";

// The flag to display a url.

final String WIN_FLAG = "url.dll,FileProtocolHandler";

String cmd = null;

// ("");

// (":\\docs\\index.html");

// ("");

//final String url = ":\\Documents and Settings\\Administrator\\My Documents\\abs.txt";

//final String url = ":\\workspace\\javaNotepad\\doc\\index.html";

//final String url = "./doc/index.html";

final String url = "";

cmd = WIN_PATH + " " + WIN_FLAG + " " + url;

try {

Runtime.getRuntime().exec(cmd);

} catch (IOException e1) {

// TODO 自动生成 catch 块

e1.printStackTrace();

}

}

}

}

public static void main(String[] args) { // 程序入口

try {

UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());

}

catch (Exception e) {

System.err.println(e);

}

Notepad notepad = new Notepad("记事本");

notepad.setVisible(true);

}

}

//完全好用,。

Java记事本源代码

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.datatransfer.Clipboard;

import java.awt.datatransfer.DataFlavor;

import java.awt.datatransfer.Transferable;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.FocusEvent;

import java.awt.event.FocusListener;

import java.awt.event.InputEvent;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JPopupMenu;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.KeyStroke;

import javax.swing.filechooser.FileFilter;

public class Demo extends JFrame {

private static final long serialVersionUID = 1L; //Eclipse自动生成序列号

String name = "无标题";

JPanel menuPanel = new JPanel();

JTextArea text = new TextAreaMenu(); //文本编辑区

JScrollPane jsp = new JScrollPane(text); //可滚动编辑区

JMenuBar mnbMain = new JMenuBar();

JMenu mnServer = new JMenu("文件(F)");

JMenu mnEdit = new JMenu("编辑(E)");

JMenuItem[] mniServers = new JMenuItem[]{

new JMenuItem("新建(N)"),

new JMenuItem("保存(S)"),

new JMenuItem("打开(O)"),

new JMenuItem("退出(X)"),

};

{

menuPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));

mnbMain.add(mnServer);

menuPanel.add(mnbMain);

mnbMain.setBounds(5, 0, 50, 30);

for (int i = 0; i mniServers.length; i++) {

mnServer.add(mniServers[i]);

}

mniServers[0].addActionListener(new ActionListener() { //定义"新建"组件操作

@Override

public void actionPerformed(ActionEvent arg0) {

new Demo(getLocation().x+15,getLocation().y+5);

}

});

mniServers[1].addActionListener(new ActionListener() { //定义"保存"组件操作

@Override

public void actionPerformed(ActionEvent arg0) {

chooseToSave();

}

});

mniServers[2].addActionListener(new ActionListener() { //定义"打开"组件操作

@Override

public void actionPerformed(ActionEvent arg0) {

chooseToOpen();

}

});

mniServers[3].addActionListener(new ActionListener() { //定义"退出"组件操作

@Override

public void actionPerformed(ActionEvent arg0) {

System.exit(0);

}

});

text.addFocusListener(new FocusListener() {

@Override

public void focusLost(FocusEvent e) {

// TODO Auto-generated method stub

}

@Override

public void focusGained(FocusEvent e) {

}

});

}

public Demo(int x,int y) {

this.setTitle( name +" - 记事本");

this.setBounds(x, y, 600, 400);

this.setLayout(new BorderLayout());

this.add(menuPanel, BorderLayout.NORTH);

this.add(jsp);

jsp.setBounds(5, 30, getWidth()-10, getHeight()-50);

this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

this.setVisible(true);

}

public Demo() {

this(200,200);

}

protected void chooseToSave() {

File file = chooseFile();

if(null==file)return;

if(file.exists()){

int cho = JOptionPane.showConfirmDialog(this, "文件已存在,是否覆盖?");

System.out.println(cho);

if(cho==JOptionPane.OK_OPTION)save(file);

else return;

}

else save(file);

}

private void save(File file) {

name = file.getName();

write(text.getText(),file.getPath());

this.setTitle( name +" - 记事本");

}

protected void chooseToOpen() {

File file = chooseFile();

if(null==file||!file.exists())return;

name = file.getName();

Demo.this.setTitle( name +" - 记事本");

read(text,file);

}

/*********************************************MAIN**************************************************/

public static void main(String[] args) {

new Demo();

}

private File chooseFile(){

JFileChooser chooser = new JFileChooser(); //构建文件选择器

chooser.setFileFilter(new FileFilter() {

@Override

public String getDescription() {

return "文本文件";

}

@Override

public boolean accept(File f) {

String name = f.getName().toLowerCase();

return f.isDirectory() || name.endsWith(".txt")

||name.endsWith(".c") || name.endsWith(".java")

||name.endsWith(".cpp"); //可识别文件

}

});

int result = chooser.showDialog(null, "确定");

if (result==JFileChooser.APPROVE_OPTION) {

File file = chooser.getSelectedFile();

System.out.println(file.getAbsolutePath());

} else {

System.out.println("未选择文件");

}

return chooser.getSelectedFile();

}

public static void read(JTextArea text,File file){ //定义读取文件操作

FileReader fr;

try {

fr = new FileReader(file);

BufferedReader br = new BufferedReader(fr);

String string = null;

while((string = br.readLine()) != null){

text.append(string+"\n");

}

br.close();

fr.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void write(String txt,String fileName){

FileWriter fw;

try {

fw = new FileWriter(fileName);

BufferedWriter bw = new BufferedWriter(fw);

bw.write(txt);

bw.flush();

bw.close();

fw.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

class TextAreaMenu extends JTextArea implements MouseListener {

private static final long serialVersionUID = -2308615404205560110L;

private JPopupMenu pop = null; // 弹出菜单

private JMenuItem selectAll = null,copy = null, paste = null, cut = null, cancel=null; // 功能菜单

public TextAreaMenu() {

super();

init();

}

private void init() {

this.addMouseListener(this);

this.setSelectedTextColor(Color.red);

pop = new JPopupMenu();

pop.add(selectAll = new JMenuItem("全选"));

pop.add(copy = new JMenuItem("复制"));

pop.add(paste = new JMenuItem("粘贴"));

pop.add(cut = new JMenuItem("剪切"));

pop.add(cancel = new JMenuItem("撤销"));

selectAll.setAccelerator(KeyStroke.getKeyStroke('A', InputEvent.CTRL_MASK));

copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));

paste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK));

cut.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_MASK));

cancel.setAccelerator(KeyStroke.getKeyStroke('Z', InputEvent.CTRL_MASK));

copy.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

action(e);

}

});

paste.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

action(e);

}

});

cut.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

action(e);

}

});

this.add(pop);

}

/**

* 菜单动作

* @param e

*/

public void action(ActionEvent e) {

String str = e.getActionCommand();

if (str.equals(selectAll.getText())) { // 全选

this.selectAll();

}

else if (str.equals(copy.getText())) { // 复制

this.copy();

} else if (str.equals(paste.getText())) { // 粘贴

this.paste();

} else if (str.equals(cut.getText())) { // 剪切

this.cut();

}

else if (str.equals(cancel.getText())) { //撤销

this.cut();

}

}

public JPopupMenu getPop() {

return pop;

}

public void setPop(JPopupMenu pop) {

this.pop = pop;

}

/**

* 剪切板中是否有文本数据可供粘贴

*

* @return true为有文本数据

*/

public boolean isClipboardString() {

boolean b = false;

Clipboard clipboard = this.getToolkit().getSystemClipboard();

Transferable content = clipboard.getContents(this);

try {

if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {

b = true;

}

} catch (Exception e) {

}

return b;

}

/**

* 文本组件中是否具备复制的条件

*

* @return true为具备

*/

public boolean isCanCopy() {

boolean b = false;

int start = this.getSelectionStart();

int end = this.getSelectionEnd();

if (start != end)

b = true;

return b;

}

public void mouseClicked(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

public void mousePressed(MouseEvent e) {

if (e.getButton() == MouseEvent.BUTTON3) {

copy.setEnabled(isCanCopy());

paste.setEnabled(isClipboardString());

cut.setEnabled(isCanCopy());

pop.show(this, e.getX(), e.getY());

}

}

public void mouseReleased(MouseEvent e) {

}

}

java记事本源代码

给你个做好了的Java的源程序的记事本,自己看看就行了的,不怎么难的···

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import javax.swing.*;

public class MyNotepad implements ActionListener{

private JFrame frame=new JFrame("新记事本");

private JTextArea jta=new JTextArea();

private String result="";

private boolean flag=true;

private File f;

private JButton jb=new JButton("开始");

private JTextField jtf=new JTextField(15);

private JTextField jt=new JTextField(15);

private JButton jbt=new JButton("替换为");

private JButton jba=new JButton("全部替换");

private Icon ic=new ImageIcon("D:\\java课堂笔记\\GUI\\11.gif");

private String value;

private int start=0;

private JFrame jf=new JFrame("查找");

private JFrame jfc=new JFrame("替换");

@Override

public void actionPerformed(ActionEvent e) {

String comm=e.getActionCommand();

if("新建".equals(comm)){

if(!(frame.getTitle().equals("新记事本"))){

if(!flag){

write();

newNew();

}else{

JFileChooser jfc=new JFileChooser("D:\\java课堂笔记");

int returnVal = jfc.showDialog(null,"保存为");

if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性

f=jfc.getSelectedFile();

flag=false;

write();

}

}

}else if(!(jta.getText().isEmpty())){

JFileChooser jfc=new JFileChooser("D:\\java课堂笔记");

int returnVal = jfc.showDialog(null,"保存为");

if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性

f=jfc.getSelectedFile();

flag=false;

write();

newNew();

}

}else{

newNew();

}

}else if("打开".equals(comm)){

JFileChooser jfc=new JFileChooser("D:\\java课堂笔记");

jfc.setDialogType(JFileChooser.OPEN_DIALOG);

int returnVal = jfc.showOpenDialog(null);

if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性

f=jfc.getSelectedFile();

frame.setTitle(f.getName());

result=read();

flag=false;

value=result;

jta.setText(result);

}

}else if("保存".equals(comm)){

JFileChooser jfc=new JFileChooser("D:\\java课堂笔记");

if(flag){

int returnVal = jfc.showDialog(null,"保存为");

if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性

f=jfc.getSelectedFile();

flag=false;

write();

}

}else{

write();

}

}else if("另存".equals(comm)){

JFileChooser jfc=new JFileChooser("D:\\java课堂笔记");

int returnVal = jfc.showDialog(null,"另存");

if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性

f=jfc.getSelectedFile();

write();

}

}else if("退出".equals(comm)){

System.exit(0);

}else if("撤销".equals(comm)){

jta.setText(value);

}else if("剪切".equals(comm)){

value=jta.getText();

jta.cut();

}else if("复制".equals(comm)){

jta.copy();

}else if("粘贴".equals(comm)){

value=jta.getText();

jta.paste();

}else if("删除".equals(comm)){

value=jta.getText();

jta.replaceSelection(null);

}else if("全选".equals(comm)){

jta.selectAll();

}else if("查找".equals(comm)){

value=jta.getText();

jf.add(jtf,BorderLayout.CENTER);

jf.add(jb,BorderLayout.SOUTH);

jf.setLocation(300,300);

jf.pack();

jf.setVisible(true);

jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}else if("替换".equals(comm)){

value=jta.getText();

GridLayout gl=new GridLayout(3,3);

JLabel jl1=new JLabel("查找内容:");

JLabel jl2=new JLabel("替换为:");

jfc.setLayout(gl);

jfc.add(jl1);

jfc.add(jtf);

jfc.add(jb);

jfc.add(jl2);

jfc.add(jt);

jfc.add(jbt);

JLabel jl3=new JLabel();

JLabel jl4=new JLabel();

jfc.add(jl3);

jfc.add(jl4);

jfc.add(jba);

jfc.setLocation(300,300);

jfc.pack();

jfc.setVisible(true);

jfc.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}else if("版本".equals(comm)){

JDialog jd=new JDialog(frame,"关于对话框");

jd.setSize(200,200);

JLabel l=new JLabel("哈哈哈哈哈哈哈哈哈哈呵呵呵呵呵呵呵呵呵呵呵呵呵");

jd.add(l,BorderLayout.CENTER);

jd.setLocation(100,200);

jd.setSize(300,300);

jd.setVisible(true);

// jd.pack();

jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

}else if("开始".equals(comm)||"下一个".equals(comm)){

String temp=jtf.getText();

int s=value.indexOf(temp,start);

if(value.indexOf(temp,start)!=-1){

jta.setSelectionStart(s);

jta.setSelectionEnd(s+temp.length());

jta.setSelectedTextColor(Color.GREEN);

start=s+1;

jb.setText("下一个");

// value=value.substring(s+temp.length());//不能截取字串

}else {

JOptionPane.showMessageDialog(jf, "查找完毕!", "提示", 0, ic);

jf.dispose();

}

}else if("替换为".equals(comm)){

String temp=jtf.getText();

int s=value.indexOf(temp,start);

if(value.indexOf(temp,start)!=-1){

jta.setSelectionStart(s);

jta.setSelectionEnd(s+temp.length());

jta.setSelectedTextColor(Color.GREEN);

start=s+1;

jta.replaceSelection(jt.getText());

}else {

JOptionPane.showMessageDialog(jf, "查找完毕!", "提示", 0, ic);

jf.dispose();

}

}else if("全部替换".equals(comm)){

String temp=jta.getText();

temp=temp.replaceAll(jtf.getText(), jt.getText());

jta.setText(temp);

}

}

public String read(){

String temp="";

try {

FileInputStream fis = new FileInputStream(f.getAbsolutePath());

byte[] b=new byte[1024];

while(true){

int num=fis.read(b);

if(num==-1)break;

temp=temp+new String(b,0,num);

}

fis.close();

} catch (Exception e1) {

e1.printStackTrace();

}

return temp;

}

public void write(){

try {

FileOutputStream fos=new FileOutputStream(f);

fos.write(jta.getText().getBytes());

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public void newNew(){

frame.dispose();

new MyNotepad();

flag=true;

}

public MyNotepad(){

JMenuBar jmb=new JMenuBar();

String[] menuLab={"文件","编辑","帮助"};

String[][] menuItemLab={{"新建","打开","保存","另存","退出"},

{"撤销","剪切","复制","粘贴","删除","全选","查找","替换"},

{"版本"}};

for(int i=0;imenuLab.length;i++){

JMenu menu=new JMenu(menuLab[i]);

jmb.add(menu);

for(int j=0;jmenuItemLab[i].length;j++){

JMenuItem jmi=new JMenuItem(menuItemLab[i][j]);

menu.add(jmi);

jmi.addActionListener(this);

}

}

frame.setJMenuBar(jmb);

jta.setLineWrap(true);//自动换行

JScrollPane jsp=new JScrollPane(jta);//滚动窗口面板

frame.add(jsp);

jb.addActionListener(this);

jbt.addActionListener(this);

jba.addActionListener(this);

frame.setLocation(200,50);

frame.setSize(620,660);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {

new MyNotepad();

}

}

记事本java代码

//继承的类换一下,应该用swing包里面

class Jsben extends Frame  {   -- class Jsben extends JFrame  {

frame的方法setMenuBar(bar);和setJMenuBar(bar);这个不太一样,功能类似

java怎么实现记事本中的 撤销 功能

// ---------------创建撤消操作管理器

protected UndoManager undo = new UndoManager();

protected UndoableEditListener undoHandler = new UndoHandler();

// 撤消

else if (e.getSource() == mEdit_Undo || e.getSource() == popupMenu_Undo || e.getSource() == undoButton) {

Text.requestFocus();

if (undo.canUndo()) {

try {

undo.undo();

} catch (CannotUndoException ex) {

System.out.println("Unable to undo: " + ex);

ex.printStackTrace();

}

if (!undo.canUndo()) {

mEdit_Undo.setEnabled(false);

popupMenu_Undo.setEnabled(false);

undoButton.setEnabled(false);

}

}

}

//兄弟连Java战狼班

java如何实现记事本中的 撤销 功能

写一个栈,把前面的操作压入栈里,撤销的时候一个个出栈就可以了。。

关于记事本撤销代码java和记事本取消撤销的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/29892.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载