记事本撤销代码java(记事本取消撤销)
admin 发布:2022-12-19 23:21 190
本篇文章给大家谈谈记事本撤销代码java,以及记事本取消撤销对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、【紧急求助】求简单JAVA记事本程序
- 2、Java记事本源代码
- 3、java记事本源代码
- 4、记事本java代码
- 5、java怎么实现记事本中的 撤销 功能
- 6、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站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-09网页代码,网页代码快捷键
- 05-06单页网站的代码(完整的网页代码)[20240506更新]
- 05-06个人主页图片代码(个人主页图片代码怎么弄)[20240506更新]
- 05-06提取微信名片代码(微信名片信息提取)[20240506更新]
- 05-06php后台权限管理代码(php管理员权限)[20240506更新]
- 05-06付费观看代码php(付费观看代码)[20240506更新]
- 05-06在线html执行代码(html怎么运行)[20240506更新]
- 05-06源代码管理资源管理器(资源管理器运行代码)[20240506更新]
- 05-06代码源软件库(程序代码库)[20240506更新]
- 05-06点击弹出密码代码(点击弹出密码代码错误)[20240506更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接