java记事本简单代码

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class Notepad extends JFrame implements ActionListener{
private JMenuItem newItem;
private JMenuItem openItem;
private JMenuItem saveItem;
private JMenuItem saveAsItem;
private JMenuItem exitItem;

private JMenuItem chexiaoItem;
private JMenuItem cutItem;
private JMenuItem copyItem;
private JMenuItem pasteItem;
private JMenuItem delItem;
private JMenuItem findItem;
private JMenuItem findNextItem;
private JMenuItem replaceItem;
private JMenuItem gotoItem;
private JMenuItem timeItem;
private JMenuItem selectAllItem;

private FileDialog openFileDialog;
private FileDialog saveAsFileDialog;
private FileDialog saveFileDialog;

private JTextArea jtextArea;


private JMenuItem autoNewLine;
private JMenuItem fontType;

private JMenuItem statusBar;

//申明一个辅助工具类
private Toolkit toolkit;

//申明一个剪切板
private Clipboard clipBoard;

//文件路径;
String filePath;

//用来标记自动换行和状态栏的互斥关系
private static boolean autoNewLineStatusBar = true;



Notepad() {

Container con;

//打开对话框
openFileDialog = new FileDialog(this, "打开", FileDialog.LOAD);

saveAsFileDialog = new FileDialog(this, "另存为", FileDialog.LOAD);

saveFileDialog = new FileDialog(this, "保存", FileDialog.LOAD);

toolkit = Toolkit.getDefaultToolkit();

Dimension dimension = toolkit.getScreenSize();


//定义彩带栏
JMenuBar jmenuBar = new JMenuBar();
//定义文件菜单
JMenu fileMenu = new JMenu("文件");
JMenu edittMenu = new JMenu("编辑");
JMenu format = new JMenu("格式");
JMenu see = new JMenu("查看");
JMenu helpMenu = new JMenu("帮助");

//定义菜单项
newItem = new JMenuItem("新建(N)");
openItem = new JMenuItem("打开(O)");
saveItem = new JMenuItem("保存(S)");
saveAsItem = new JMenuItem("另存为(A)");
exitItem = new JMenuItem("退出(Q)");

//增加快捷键
newItem.setAccelerator(KeyStroke.getKeyStroke('N'));
openItem.setAccelerator(KeyStroke.getKeyStroke('O'));
saveItem.setAccelerator(KeyStroke.getKeyStroke('S'));
saveAsItem.setAccelerator(KeyStroke.getKeyStroke('A'));
exitItem.setAccelerator(KeyStroke.getKeyStroke('Q'));

//增加事件
newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
saveAsItem.addActionListener(this);
exitItem.addActionListener(this);

//增加文件菜单项
jmenuBar.add(fileMenu);
//增加菜单项
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveAsItem);
//增加分隔线
fileMenu.addSeparator();
fileMenu.add(exitItem);

//增加编辑菜单项
jmenuBar.add(edittMenu);

chexiaoItem = new JMenuItem("撤销(U)");
cutItem = new JMenuItem("剪切");
copyItem = new JMenuItem("复制");
pasteItem = new JMenuItem("粘贴");
delItem = new JMenuItem("删除");
findItem = new JMenuItem("查找");
findNextItem = new JMenuItem("查找下一个");
replaceItem = new JMenuItem("替换");
gotoItem = new JMenuItem("转到");
selectAllItem = new JMenuItem("全选");
timeItem = new JMenuItem("时间/日期");

chexiaoItem.setAccelerator(KeyStroke.getKeyStroke('Z', InputEvent.CTRL_DOWN_MASK)); //ctr + z键
cutItem.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_DOWN_MASK));
copyItem.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_DOWN_MASK));
pasteItem.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_DOWN_MASK));
delItem.setAccelerator(KeyStroke.getKeyStroke('Z', InputEvent.CTRL_DOWN_MASK));
findItem.setAccelerator(KeyStroke.getKeyStroke('F', InputEvent.CTRL_DOWN_MASK));
findNextItem.setAccelerator(KeyStroke.getKeyStroke('Z', InputEvent.CTRL_DOWN_MASK));
replaceItem.setAccelerator(KeyStroke.getKeyStroke('H', InputEvent.CTRL_DOWN_MASK));
gotoItem.setAccelerator(KeyStroke.getKeyStroke('G', InputEvent.CTRL_DOWN_MASK));
selectAllItem.setAccelerator(KeyStroke.getKeyStroke('A', InputEvent.CTRL_DOWN_MASK));
//timeItem.setAccelerator(KeyStroke.getKeyStroke("VK_F5"));

chexiaoItem.addActionListener(this);
cutItem.addActionListener(this);
copyItem.addActionListener(this);
pasteItem.addActionListener(this);
delItem.addActionListener(this);
findItem.addActionListener(this);
findNextItem.addActionListener(this);
replaceItem.addActionListener(this);
gotoItem.addActionListener(this);
selectAllItem.addActionListener(this);
timeItem.addActionListener(this);

edittMenu.add(chexiaoItem);
edittMenu.addSeparator();
edittMenu.add(cutItem);
edittMenu.add(copyItem);
edittMenu.add(pasteItem);
edittMenu.add(delItem);
edittMenu.addSeparator();
edittMenu.add(findItem);
edittMenu.add(findNextItem);
edittMenu.add(replaceItem);
edittMenu.add(gotoItem);
edittMenu.addSeparator();
edittMenu.add(selectAllItem);
edittMenu.add(timeItem);




//增加格式菜单项
jmenuBar.add(format);

autoNewLine = new JMenuItem("自动换行(W)");
fontType= new JMenuItem("字体(F)");

autoNewLine.addActionListener(this);
fontType.addActionListener(this);


format.add(autoNewLine);
format.add(fontType);

//拉架查看菜单项
jmenuBar.add(see);

statusBar = new JMenuItem("状态栏(S)");
//statusBar.setEnabled(false);

statusBar.addActionListener(this);

see.add(statusBar);



//增加帮助菜单项
jmenuBar.add(helpMenu);

JMenuItem lookHelpInfo = new JMenuItem("查看帮助(H)");
JMenuItem aboutJavaNotepad = new JMenuItem("关于记事本(A)");

helpMenu.add(lookHelpInfo);
helpMenu.add(aboutJavaNotepad);

//设置菜单条

this.setLocation(100, 100);
//this.setDefaultCloseOperation(2);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//System.out.println("asdg");
//JDialog jDialog = new JDialog(con);
System.exit(1);
//JOptionPane.showInternalOptionDialog(con, null, "请", 3, null, null, null, null);
// JOptionPane.showInternalOptionDialog(parentComponent, message, title, optionType, messageType, icon, options, initialValue)
}
});

con = this.getContentPane();

this.setSize((int)dimension.getWidth()/2, (int)dimension.getHeight()/2);
this.setLocation((int)dimension.getWidth()/4, (int)dimension.getHeight()/4);

this.setLayout(new BorderLayout());
jtextArea = new JTextArea();
jtextArea.setWrapStyleWord(true);
con.add(jtextArea, BorderLayout.CENTER);

this.setJMenuBar(jmenuBar);
this.setTitle("JAVA-记事本");
this.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
System.out.println("a");
//局部的JTextArea;
JTextArea jtextArea = this.getJtextArea();

//得到事件源
JMenuItem menuItem = (JMenuItem)e.getSource();



//判断事件源
if(menuItem == newItem) {
new Notepad();

} else if(menuItem == openItem) {
openFileDialog.show(true);
filePath = openFileDialog.getDirectory() + openFileDialog.getFile();
if(filePath != null && !filePath.trim().equals("")) {
this.readFile(filePath);
}

} else if(menuItem == saveItem) {
saveFileDialog.show(true);
filePath = saveFileDialog.getDirectory() + saveFileDialog.getFile();
if(filePath != null && !filePath.trim().equals("")) {
this.writeFile(filePath);
}

} else if(menuItem == saveAsItem) {
saveAsFileDialog.show(true);
filePath = saveAsFileDialog.getDirectory() + saveAsFileDialog.getFile();
if(filePath != null && !filePath.trim().equals("")) {
this.writeFile(filePath);
}

} else if(menuItem == selectAllItem) {
this.getJtextArea().selectAll();

} else if(menuItem == copyItem) {
/*this.getJtextArea()得到jtextArea这个对象,getSelectedText()是从javax.swing.text.JTextComponent继承方法
得到所选内容
*/
String strContents = this.getJtextArea().getSelectedText();

/* StringSelection它实现了Transferable接囗,方法setContents(Transferable contents,ClipboardOwner owner)
contents - 表示剪贴板内容的 transferable 对象,owner - 拥有剪贴板内容的对象
*/
StringSelection stringSelection = new StringSelection(strContents);
clipBoard.setContents(stringSelection, null);

} else if(menuItem == pasteItem) {
Transferable contents = clipBoard.getContents(this);
if(contents != null) {
String text = "";
try {
/*
getTransferData()为接囗Transferable的方法,返回一个对象,该对象表示将要被传输的数据。返回对象的类是由该 flavor 的表示类定义的.
DataFlavor.stringFlavor为DataFlavor字段
DataFlavor 表示 Java Unicode String 类
java.awt.datatransfer.DataFlavor
*/
text = (String)contents.getTransferData(DataFlavor.stringFlavor);
} catch (UnsupportedFlavorException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
} else if(menuItem == cutItem) {

String strCountents = jtextArea.getSelectedText();
StringSelection contents = new StringSelection(strCountents);
clipBoard.setContents(contents, null);

//如果只写这句,那么剪切板上没有所要剪切的内容,于是撤销就不起作用了
jtextArea.replaceRange("", jtextArea.getSelectionStart(), jtextArea.getSelectionEnd());

} else if(menuItem == exitItem) {

} else if(menuItem == timeItem) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:MM yyyy/MM/dd");
jtextArea.insert(simpleDateFormat.format(new Date()), jtextArea.getSelectionStart());

} else if(menuItem == autoNewLine) {
boolean flag = true;
//if(autoNewLineStatusBar == false) {
if(flag == true) {
//autoNewLine = new JMenuItem("√自动换行(W)");
autoNewLine.setText("√自动换行(W)");
//statusBar.setText("状态栏(S)");
statusBar.setEnabled(true);
this.setAutoNewLineStatusBar(false);
//out(autoNewLineStatusBar);
out("1");
} else if(flag == false) {
autoNewLine.setText("自动换行(W)");
//statusBar.setText("状态栏(S)");
statusBar.setEnabled(false);
this.setAutoNewLineStatusBar(true);
out("2");
}
flag = ! flag;
out("flag = " + flag);
} else if(menuItem == statusBar) {

}
}

//读出显示
public void readFile(String filePath) {
BufferedReader br = null;
String strTemp = null;
StringBuilder sb = new StringBuilder();
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath)));
while((strTemp = br.readLine()) != null) {
sb.append(strTemp).append("\n");
}
br.close();
} catch (FileNotFoundException e1) {
out("文件未能找到!");
} catch (IOException e1) {
out("读取文件出错!");
}
this.getJtextArea().setText(sb.toString());

}

//写入硬盘保存
public void writeFile(String filePath) {
StringBuilder sb = new StringBuilder();
try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)));
// System.out.println(this.getJtextArea().getText());
//写入的文件没有自动换行
bw.write(this.getJtextArea().getText());
bw.close();
} catch (FileNotFoundException e1) {
out("文件未能找到");
} catch (IOException e1) {
e1.printStackTrace();
}
}

//快速输出的方法
public static void out(Object object) {
System.out.println(object);
}

public static void main(String[] args) {
new Notepad();
}

public JTextArea getJtextArea() {
return jtextArea;
}

public void setJtextArea(JTextArea jtextArea) {
this.jtextArea = jtextArea;
}

public boolean getAutoNewLineStatusBar() {
return autoNewLineStatusBar;
}

public void setAutoNewLineStatusBar(boolean autoNewLineStatusBar) {
this.autoNewLineStatusBar = autoNewLineStatusBar;
}

}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值