📄 notepad.java
字号:
boldButton.addActionListener(this);
italicButton.addActionListener(this);
fgcolorButton.addActionListener(this);
bgcolorButton.addActionListener(this);
helpButton.addActionListener(this);
//设置按钮提示文字
newButton.setToolTipText("新建");
openButton.setToolTipText("打开");
saveButton.setToolTipText("保存");
saveAsButton.setToolTipText("另存为");
printButton.setToolTipText("打印");
undoButton.setToolTipText("撤消");
redoButton.setToolTipText("重做");
cutButton.setToolTipText("剪切");
copyButton.setToolTipText("复制");
pasteButton.setToolTipText("粘贴");
deleteButton.setToolTipText("删除所选");
searchButton.setToolTipText("查找与替换");
timeButton.setToolTipText("插入时间/日期");
fontButton.setToolTipText("设置字体");
boldButton.setToolTipText("粗体");
italicButton.setToolTipText("斜体");
fgcolorButton.setToolTipText("设置字体颜色");
bgcolorButton.setToolTipText("设置背景颜色");
helpButton.setToolTipText("帮助");
//设置撤消、重做、剪切、复制、粘贴、删除等工具栏按钮不可用时的图片(灰色)
undoButton.setDisabledIcon(new ImageIcon("Icons/undo1.gif"));
redoButton.setDisabledIcon(new ImageIcon("Icons/redo1.gif"));
cutButton.setDisabledIcon(new ImageIcon("Icons/cut1.gif"));
copyButton.setDisabledIcon(new ImageIcon("Icons/copy1.gif"));
pasteButton.setDisabledIcon(new ImageIcon("Icons/paste1.gif"));
deleteButton.setDisabledIcon(new ImageIcon("Icons/delete1.gif"));
//向工具栏添加按钮
toolBar.add(newButton);
toolBar.add(openButton);
toolBar.add(saveButton);
toolBar.add(saveAsButton);
toolBar.add(printButton);
toolBar.add(undoButton);
toolBar.add(redoButton);
toolBar.add(cutButton);
toolBar.add(copyButton);
toolBar.add(pasteButton);
toolBar.add(deleteButton);
toolBar.add(searchButton);
toolBar.add(timeButton);
toolBar.add(fontButton);
toolBar.add(boldButton);
toolBar.add(italicButton);
toolBar.add(fgcolorButton);
toolBar.add(bgcolorButton);
toolBar.add(helpButton);
//向容器添加工具栏
container.add(toolBar,BorderLayout.NORTH);
//创建和添加状态栏
statusLabel=new JLabel(" 按F1获取帮助");
container.add(statusLabel,BorderLayout.SOUTH);
//改变标题栏窗口左侧默认图标
Toolkit tk=Toolkit.getDefaultToolkit();
Image image=tk.createImage("Icons/notepad.gif");
this.setIconImage(image);
//设置窗口在屏幕上的位置、大小和可见性
this.setLocation(100,100);
this.setSize(650,550);
this.setVisible(true);
checkMenuItemEnabled();
editArea.requestFocus();
} /*构造函数Notepad结束*/
//设置菜单项的可用性:剪切,复制,粘贴,删除功能
public void checkMenuItemEnabled(){
/*
*思路:
*主要是通过判断编辑区是否有文本被选中来设置这些操作(剪切,复制,删除)的可用性;
*通过判断剪贴板信息设置粘贴选项的可用性
*
**/
String selectText=editArea.getSelectedText();
if(selectText==null)
{
editMenu_Cut.setEnabled(false);
popupMenu_Cut.setEnabled(false);
cutButton.setEnabled(false);
editMenu_Copy.setEnabled(false);
popupMenu_Copy.setEnabled(false);
copyButton.setEnabled(false);
editMenu_Delete.setEnabled(false);
popupMenu_Delete.setEnabled(false);
deleteButton.setEnabled(false);
}
else
{
editMenu_Cut.setEnabled(true);
popupMenu_Cut.setEnabled(true);
cutButton.setEnabled(true);
editMenu_Copy.setEnabled(true);
popupMenu_Copy.setEnabled(true);
copyButton.setEnabled(true);
editMenu_Delete.setEnabled(true);
popupMenu_Delete.setEnabled(true);
deleteButton.setEnabled(true);
}
//粘贴功能可用性判断
Transferable contents=clipBoard.getContents(this);
if(contents==null)
{
editMenu_Paste.setEnabled(false);
popupMenu_Paste.setEnabled(false);
pasteButton.setEnabled(false);
}
else
{
editMenu_Paste.setEnabled(true);
popupMenu_Paste.setEnabled(true);
pasteButton.setEnabled(true);
}
}/*方法checkMenuItemEnabled()结束*/
//查找与替换功能
public void mySearch(){
final JDialog findDialog=new JDialog(this,"查找与替换",true);
Container con=findDialog.getContentPane();
con.setLayout(new FlowLayout(FlowLayout.LEFT));
JLabel searchContentLabel=new JLabel("查找内容(N) :");
JLabel replaceContentLabel=new JLabel("替换为(P) :");
final JTextField findText=new JTextField(30);
final JTextField replaceText=new JTextField(30);
final JCheckBox matchcase =new JCheckBox("区分大小写(C)");
ButtonGroup bGroup=new ButtonGroup();
final JRadioButton up=new JRadioButton("向上(U)");
final JRadioButton down=new JRadioButton("向下(D)");
down.setSelected(true);
bGroup.add(up);
bGroup.add(down);
JButton searchNext=new JButton("查找下一个(F)");
JButton replace=new JButton("替换(R)");
final JButton replaceAll=new JButton("全部替换(A)");
//"替换"按钮的事件处理
replace.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(replaceText.getText().length() == 0 && editArea.getSelectedText()!=null)
editArea.replaceSelection("");
if(replaceText.getText().length() > 0 && editArea.getSelectedText()!= null)
editArea.replaceSelection(replaceText.getText());
}
});
//"替换全部"按钮的事件处理
replaceAll.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
editArea.setCaretPosition(0); //将光标放到编辑区开头
int a=0,b=0,replaceCount=0;
if(findText.getText().length()==0)
{
JOptionPane.showMessageDialog(findDialog,"请填写查找内容!","提示",JOptionPane.WARNING_MESSAGE);
findText.requestFocus(true);
return;
}
while( a > -1) {
int FindStartPos=editArea.getCaretPosition();
String str1, str2, str3, str4, strA, strB;
str1 = editArea.getText();
str2 = str1.toLowerCase();
str3 = findText.getText();
str4 = str3.toLowerCase();
if(matchcase.isSelected()) {
strA = str1;
strB = str3;
}
else {
strA = str2;
strB = str4;
}
if(up.isSelected()){
if(editArea.getSelectedText()==null){
a = strA.lastIndexOf(strB, FindStartPos-1);
}
else
{
a = strA.lastIndexOf(strB, FindStartPos-findText.getText().length()-1);
}
}
else if(down.isSelected())
{
if(editArea.getSelectedText()==null){
a = strA.indexOf(strB, FindStartPos);
}
else
{
a=strA.indexOf(strB,FindStartPos-findText.getText().length()+1);
}
}
if(a > -1) {
if(up.isSelected()){
editArea.setCaretPosition(a);
b = findText.getText().length();
editArea.select(a, a + b);
}
else if(down.isSelected()){
editArea.setCaretPosition(a);
b = findText.getText().length();
editArea.select(a, a + b);
}
}
else {
if(replaceCount==0){
JOptionPane.showMessageDialog(findDialog, "找不到您查找的内容!", "记事本",JOptionPane.INFORMATION_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(findDialog,"成功替换"+replaceCount+"个匹配内容!","替换成功",JOptionPane.INFORMATION_MESSAGE);
}
}
if(replaceText.getText().length() == 0 && editArea.getSelectedText() != null){
editArea.replaceSelection("");
replaceCount++;
}
if(replaceText.getText().length() > 0 && editArea.getSelectedText() != null)
{
editArea.replaceSelection(replaceText.getText());
replaceCount++;
}
}//end while
}
}); /*"替换全部"按钮的事件处理结束*/
//"查找下一个"按钮事件处理
searchNext.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int a = 0, b =0;
int FindStartPos=editArea.getCaretPosition();
String str1, str2, str3, str4, strA, strB;
str1 = editArea.getText();
str2 = str1.toLowerCase();
str3 = findText.getText();
str4 = str3.toLowerCase();
//"区分大小写"的CheckBox被选中
if(matchcase.isSelected()) {
strA = str1;
strB = str3;
}
else {
strA = str2;
strB = str4;
}
if(up.isSelected()){
if(editArea.getSelectedText()==null){
a = strA.lastIndexOf(strB, FindStartPos-1);
}
else{
a = strA.lastIndexOf(strB, FindStartPos-findText.getText().length()-1);
}
}
else if(down.isSelected()){
if(editArea.getSelectedText()==null){
a = strA.indexOf(strB, FindStartPos);
}
else{
a=strA.indexOf(strB,FindStartPos-findText.getText().length()+1);
}
}
if(a > -1) {
if(up.isSelected()){
editArea.setCaretPosition(a);
b = findText.getText().length();
editArea.select(a, a + b);
}
else if(down.isSelected()){
editArea.setCaretPosition(a);
b = findText.getText().length();
editArea.select(a, a + b);
}
}
else {
JOptionPane.showMessageDialog(null, "找不到您查找的内容!", "记事本",JOptionPane.INFORMATION_MESSAGE);
}
}
});/*"查找下一个"按钮事件处理结束*/
//"取消"按钮及事件处理
JButton cancel=new JButton("取消");
cancel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
findDialog.dispose();
}
});
//创建"查找与替换"对话框的界面
JPanel bottomPanel=new JPanel();
JPanel centerPanel=new JPanel();
JPanel topPanel=new JPanel();
JPanel direction=new JPanel();
direction.setBorder(BorderFactory.createTitledBorder("方向"));
direction.add(up);
direction.add(down);
JPanel replacePanel=new JPanel();
replacePanel.setLayout(new GridLayout(2,1));
replacePanel.add(replace);
replacePanel.add(replaceAll);
topPanel.add(searchContentLabel);
topPanel.add(findText);
topPanel.add(searchNext);
centerPanel.add(replaceContentLabel);
centerPanel.add(replaceText);
centerPanel.add(replacePanel);
bottomPanel.add(matchcase);
bottomPanel.add(direction);
bottomPanel.add(cancel);
con.add(topPanel);
con.add(centerPanel);
con.add(bottomPanel);
//设置"查找与替换"对话框的大小、可更改大小(否)、位置和可见性
findDialog.setSize(410,210);
findDialog.setResizable(false);
findDialog.setLocation(230,280);
findDialog.setVisible(true);
} /*方法mySearch()结束*/
//实现ActionListener的事件处理方法public void actionPerformed(ActionEvent e)
public void actionPerformed(ActionEvent e)
{
//新建
if(e.getSource()==fileMenu_New||e.getSource()==newButton)
{
editArea.requestFocus();
String currentValue=editArea.getText();
boolean isTextChange=(currentValue.equals(oldValue))?false:true;
if(isTextChange){
int saveChoose=JOptionPane.showConfirmDialog(this,"您的文件尚未保存。是否保存?","提示",JOptionPane.YES_NO_CANCEL_OPTION);
if(saveChoose==JOptionPane.YES_OPTION)
{
String str=null;
JFileChooser fileChooser=new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setApproveButtonText("确定");
fileChooser.setDialogTitle("另存为");
int result=fileChooser.showSaveDialog(this);
if(result==JFileChooser.CANCEL_OPTION){
statusLabel.setText("您没有选择任何文件");
return;
}
File saveFileName=fileChooser.getSelectedFile();
if(saveFileName==null||saveFileName.getName().equals(""))
JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);
else {
try{
FileWriter fw=new FileWriter(saveFileName);
BufferedWriter bfw=new BufferedWriter(fw);
bfw.write(editArea.getText(),0,editArea.getText().length());
bfw.flush();
fw.close();
isNewFile=false;
currentFile=saveFileName;
oldValue=editArea.getText();
this.setTitle(saveFileName.getName()+" - 记事本");
statusLabel.setText(" 当前打开文件:"+saveFileName.getAbsoluteFile());
}
catch(IOException ioException){
}
}
}
else if(saveChoose==JOptionPane.NO_OPTION){
editArea.replaceRange("", 0, editArea.getText().length());
statusLabel.setText(" 新建文件");
this.setTitle("无标题 - 记事本");
isNewFile=true;
undo.discardAllEdits(); //撤消所有的"撤消"和"重做"操作
editMenu_Undo.setEnabled(false);
popupMenu_Undo.setEnabled(false);
undoButton.setEnabled(false);
editMenu_Redo.setEnabled(false);
popupMenu_Redo.setEnabled(false);
redoButton.setEnabled(false);
oldValue=editArea.getText();
}
else if(saveChoose==JOptionPane.CANCEL_OPTION)
{
return;
}
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -