📄 notepad.java
字号:
if (statusitem.getState() == true)
statusLabel.setText("View the introduction");
}
public void mouseExited(MouseEvent e) {
if (statusitem.getState() == true)
statusLabel.setText("Status");
}
});
aboutitem.addActionListener(this);
textArea = new JTextArea(30, 50);
textArea.setAutoscrolls(true);
textArea.setLineWrap(true);
JScrollPane scroll = new JScrollPane(textArea);
statusLabel = new JLabel("");
statusLabel.setHorizontalTextPosition(JLabel.LEFT);
textArea.addMouseMotionListener(new MouseMotionAdapter() { // 文本区监听,若有鼠标选择文本区域则执行相应操作
public void mouseDragged(MouseEvent e) {
if (textArea.getSelectedText() != null) {
delitem.setEnabled(true);
cutitem.setEnabled(true);
copyitem.setEnabled(true);
pdelitem.setEnabled(true);
pcutitem.setEnabled(true);
pcopyitem.setEnabled(true);
} else {
delitem.setEnabled(false);
cutitem.setEnabled(false);
copyitem.setEnabled(false);
pdelitem.setEnabled(false);
pcutitem.setEnabled(false);
pcopyitem.setEnabled(false);
}
}
public void mouseMoved(MouseEvent e) {
if (textArea.getSelectedText() != null) {
delitem.setEnabled(true);
cutitem.setEnabled(true);
copyitem.setEnabled(true);
pdelitem.setEnabled(true);
pcutitem.setEnabled(true);
pcopyitem.setEnabled(true);
} else {
delitem.setEnabled(false);
cutitem.setEnabled(false);
copyitem.setEnabled(false);
pdelitem.setEnabled(false);
pcutitem.setEnabled(false);
pcopyitem.setEnabled(false);
}
}
});
textArea.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
popupMenu.show(textArea, e.getX(), e.getY());
}
}
});
t = new DocumentListener() { // 新建文档监听对象
public void changedUpdate(DocumentEvent e) { // 文档修改时
temp[0] = temp[1]; // 恢复上一布操作
undoitem.setEnabled(true); // 开启撤销菜单
saveflag = 0; // 设置未保存标志
try {
temp[1] = textArea.getDocument().getText(0,
textArea.getDocument().getLength()); // 保存修改后文档
} catch (BadLocationException ee) {
}
}
public void insertUpdate(DocumentEvent e) {
temp[0] = temp[1];
undoitem.setEnabled(true);
saveflag = 0;
try {
temp[1] = textArea.getDocument().getText(0,
textArea.getDocument().getLength());
} catch (BadLocationException ee) {
}
}
public void removeUpdate(DocumentEvent e) {
temp[0] = temp[1];
undoitem.setEnabled(true);
saveflag = 0;
try {
temp[1] = textArea.getDocument().getText(0,
textArea.getDocument().getLength());
} catch (BadLocationException ee) {
}
}
};
textArea.getDocument().addDocumentListener(t);
filemenu.add(newitem); // 界面部署
filemenu.add(openitem);
filemenu.add(saveitem);
filemenu.add(saveasitem);
filemenu.addSeparator();
filemenu.add(exititem);
editmenu.add(undoitem);
editmenu.addSeparator();
editmenu.add(cutitem);
editmenu.add(copyitem);
editmenu.add(pasteitem);
editmenu.add(delitem);
editmenu.addSeparator();
editmenu.add(finditem);
editmenu.add(findnextitem);
editmenu.add(replaceitem);
editmenu.addSeparator();
editmenu.add(selallitem);
editmenu.add(timeitem);
formatmenu.add(coloritem);
formatmenu.add(fontitem);
viewmenu.add(statusitem);
helpmenu.add(aboutitem);
menubar.add(filemenu);
menubar.add(editmenu);
menubar.add(formatmenu);
menubar.add(viewmenu);
menubar.add(helpmenu);
popupMenu.add(pcutitem);
popupMenu.add(pcopyitem);
popupMenu.add(ppasteitem);
popupMenu.add(pdelitem);
popupMenu.addSeparator();
popupMenu.add(pselallitem);
popupMenu.addSeparator();
popupMenu.add(pcoloritem);
popupMenu.add(pfontitem);
Container container = frame.getContentPane();
container.add(menubar, BorderLayout.NORTH);
container.add(scroll, BorderLayout.CENTER);
scroll
.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll
.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setViewportView(textArea);
container.add(textArea, BorderLayout.CENTER);
container.add(statusLabel, BorderLayout.SOUTH);
frame.setVisible(true);
frame.pack();
frame.setLocation(320, 120);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // 由于在关闭时设有自定义操作,故设置如此
}
public void actionPerformed(ActionEvent e) { // 响应其他动作命令
if (e.getSource() == undoitem) { // 撤销,此处参照记事本一步撤销往复
textArea.getDocument().removeDocumentListener(t);
String tempundo = new String();
textArea.setText(temp[0]);
textArea.getDocument().addDocumentListener(t);
tempundo = temp[1];
temp[1] = temp[0];
temp[0] = tempundo;
} else if (e.getSource() == delitem || e.getSource() == pdelitem) { // 响应删除命令
try {
temp[0] = textArea.getDocument().getText(0,
textArea.getDocument().getLength());
} catch (BadLocationException ee) {
}
String strdel = new String();
strdel = textArea.getSelectedText();
int a = textArea.getText().indexOf(strdel);
int b = a + strdel.length();
String strend = textArea.getText().substring(0, a)
+ textArea.getText().substring(b);
textArea.setText(strend);
delitem.setEnabled(false);
cutitem.setEnabled(false);
copyitem.setEnabled(false);
pdelitem.setEnabled(false);
pcutitem.setEnabled(false);
pcopyitem.setEnabled(false);
} else if (e.getSource() == cutitem || e.getSource() == pcutitem) { // 响应剪切命令
try {
temp[0] = textArea.getDocument().getText(0,
textArea.getDocument().getLength());
} catch (BadLocationException ee) {
}
textArea.cut();
cutitem.setEnabled(false);
delitem.setEnabled(false);
copyitem.setEnabled(false);
pcutitem.setEnabled(false);
pdelitem.setEnabled(false);
pcopyitem.setEnabled(false);
} else if (e.getSource() == copyitem || e.getSource() == pcopyitem) { // 响应拷贝命令
try {
temp[0] = textArea.getDocument().getText(0,
textArea.getDocument().getLength());
} catch (BadLocationException ee) {
}
textArea.copy();
copyitem.setEnabled(false);
delitem.setEnabled(false);
cutitem.setEnabled(false);
pcopyitem.setEnabled(false);
pdelitem.setEnabled(false);
pcutitem.setEnabled(false);
} else if (e.getSource() == pasteitem || e.getSource() == ppasteitem) { // 响应粘贴命令
try {
temp[0] = textArea.getDocument().getText(0,
textArea.getDocument().getLength());
} catch (BadLocationException ee) {
}
textArea.paste();
} else if (e.getSource() == selallitem || e.getSource() == pselallitem) { // 响应全选命令
textArea.selectAll();
if (textArea.getSelectedText() != null) {
copyitem.setEnabled(true);
delitem.setEnabled(true);
cutitem.setEnabled(true);
pcopyitem.setEnabled(true);
pdelitem.setEnabled(true);
pcutitem.setEnabled(true);
}
} else if (e.getSource() == finditem) { // 响应查找命令
findinput = JOptionPane.showInputDialog(frame,
"please input what you want to find", "Find",
JOptionPane.INFORMATION_MESSAGE);
if (findinput == null || findinput == "") {
} else {
int a = textArea.getText().indexOf(findinput);
if (a == -1)
JOptionPane.showMessageDialog(frame, "not find");
else {
findend = a + findinput.length();
textArea.setSelectionStart(a);
textArea.setSelectionEnd(findend);
}
}
} else if (e.getSource() == findnextitem) { // 响应查找下一个命令
int flag = 0;
if (findinput == null && findinput == "") {
} else {
String str = textArea.getText().substring(findend);
flag = str.indexOf(findinput);
int a = flag + findend;
if (flag == -1)
JOptionPane.showMessageDialog(frame, "find end");
else {
findend = a + findinput.length();
textArea.setSelectionStart(a);
textArea.setSelectionEnd(findend);
}
}
} else if (e.getSource() == timeitem) { // 响应插入时间命令
try {
temp[0] = textArea.getDocument().getText(0,
textArea.getDocument().getLength());
} catch (BadLocationException ee) {
}
textArea.insert(new Date().toString(), textArea.getCaretPosition());
} else if (e.getSource() == replaceitem) { // 响应替换命令
try {
temp[0] = textArea.getDocument().getText(0,
textArea.getDocument().getLength()); // 保存临时文档
} catch (BadLocationException ee) {
}
replaceDialog dialog = new replaceDialog(); // 调用替换对话框
if (dialog.valid == 1) { // 对话框中选择确定
String replacefrom = dialog.find; // 接收替换对话框所给参数
String replaceto = dialog.replace;
int flag = 0;
int t = 0;
int replacebegin = 0;
int replaceend = 0;
String content = new String();
while (true) { // 查找全部
String str = textArea.getText();
flag = str.indexOf(replacefrom, replaceend); // 查找匹配
if (flag == -1) { // 查找结束
if (replaceend != str.length())
content = content
+ str.substring(replaceend, str.length());
break;
}
if (flag == 0) // 首次查找判断
content = replaceto + str.substring(0, replacebegin);
else if (t != 0 || flag != 0)
content = content + str.substring(replaceend, flag)
+ replaceto; // 临时文本截取
replacebegin = flag;
replaceend = replacebegin + replacefrom.length();
textArea.setSelectionStart(replacebegin);
textArea.setSelectionEnd(replaceend);
t++;
}
textArea.setText(content); // 将修改后结果显示在文本显示区
}
} else if (e.getSource() == statusitem) { // 响应状态栏显示或取消命令
if (statusitem.getState() == true) {
statusLabel.setText("status");
statusLabel.setVisible(true);
} else
statusLabel.setVisible(false);
} else if (e.getSource() == coloritem || e.getSource() == pcoloritem) { // 响应颜色选择命令
c = new JColorChooser();
Color color = JColorChooser.showDialog(frame, "ColorChooser",
Color.BLACK);
if (color == null)
;
else
textArea.setForeground(color);
} else if (e.getSource() == fontitem || e.getSource() == pfontitem) { // 响应字体选择命令
fontDialog fontDlg = new fontDialog();
if (fontDlg.valid == 1) {
textArea.setFont(new Font(fontDlg.fontName, fontDlg.fontStyle,
fontDlg.fontSize));
}
} else if (e.getSource() == aboutitem) { // 响应关于对话框命令
@SuppressWarnings("unused")
about aboutDlg = new about();
}
}
public static void main(String[] args) {
new Notepad();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -