📄 notepad.java
字号:
{
}
public void insertUpdate( DocumentEvent e )
{
hasSaved = false;
}
public void removeUpdate( DocumentEvent e )
{
hasSaved = false;
}
}
);
getContentPane().add( new JScrollPane( text ) );
}
public void actionPerformed(ActionEvent e)
{
actions( ( JMenuItem ) e.getSource(), e.getActionCommand() );
}
private void actions( JMenuItem source, String name )
{
for( int i = 0; i < menuItem.length; i ++ )
{
if( menuItem[i].getText().equals( name ) )
{
switch( i )
{
case 0:
//JOptionPane.showMessageDialog( null, "新建" );
if( isSaved() ) newFile();
return;
case 1:
//JOptionPane.showMessageDialog( null, "打开" );
if( isSaved() ) openFile();
return;
case 2:
//JOptionPane.showMessageDialog( null, "保存" );
saveFile();
return;
case 3:
//JOptionPane.showMessageDialog( null, "另存为" );
saveAsFile();
return;
case 4:
//JOptionPane.showMessageDialog( null, "退出" );
if( isSaved() ) System.exit( 0 );
return;
case 5:
//JOptionPane.showMessageDialog( null, "撤消" );
if( undoManager.canUndo() ) undoManager.undo();
return;
case 6:
//JOptionPane.showMessageDialog( null, "重做" );
if( undoManager.canRedo() ) undoManager.redo();
return;
case 7:
//JOptionPane.showMessageDialog( null, "剪切" );
text.cut();
return;
case 8:
//JOptionPane.showMessageDialog( null, "复制" );
text.copy();
return;
case 9:
//JOptionPane.showMessageDialog( null, "粘贴" );
text.paste();
return;
case 10:
//JOptionPane.showMessageDialog( null, "删除" );
text.replaceSelection( "" );
return;
case 11:
//JOptionPane.showMessageDialog( null, "查找" );
if( ! text.getText().equals( "" ) )
{
FindDialog fDialog =new FindDialog( this, text, findString );
fDialog.setVisible( true );
}
return;
case 12:
//JOptionPane.showMessageDialog( null, "查找下一个" );
if( ! text.getText().equals( "" ) )
{
FindDialog fNextDialog = new FindDialog( this, text, findString );
if( findString.toString().equals( "" ) )
{
fNextDialog.setVisible( true );
}
else
{
fNextDialog.find();
}
}
return;
case 13:
//JOptionPane.showMessageDialog( null, "替换" );
if( ! text.getText().equals( "" ) )
{
ReplaceDialog rDialog = new ReplaceDialog( this, text, findString, replaceString );
rDialog.setVisible( true );
}
return;
case 14:
//JOptionPane.showMessageDialog( null, "全选" );
text.selectAll();
return;
case 15:
//JOptionPane.showMessageDialog( null, "自动换行" );
JCheckBoxMenuItem item = (JCheckBoxMenuItem)source;
text.setLineWrap( item.isSelected() );
return;
case 16:
//JOptionPane.showMessageDialog( null, "字体" );
new FontDialog( this, text );
return;
case 17:
JOptionPane.showMessageDialog( this, "叶少伟",
"关于记事本", JOptionPane.CLOSED_OPTION );
return;
}
}
}
}
private void newFile()
{
text.setText( "" );
undoManager.discardAllEdits();
hasSaved = true;
setTitle( "无标题-记事本" );
openedFileName = "";
openedFilePath = "";
}
private boolean isSaved()
{
if( hasSaved )
{
return true;
}
else
{
int n;
JOptionPane jop = new JOptionPane();
jop.setFont( font );
n = jop.showConfirmDialog( this, "文件的文字已经改变\n想保存文件吗?", "记事本",
JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE );
if( n == JOptionPane.YES_OPTION )
{
//JOptionPane.showMessageDialog( null, "yes" );
if( !saveFile() ) return false;
return true;
}
else if( n == JOptionPane.NO_OPTION )
{
//JOptionPane.showMessageDialog( null, "no" );
return true;
}
else
{
//JOptionPane.showMessageDialog( null, "ok" );
return false;
}
}
}
private boolean saveAsFile()
{
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showSaveDialog( this );
if ( result == JFileChooser.CANCEL_OPTION )
return false;
File fileName = fileChooser.getSelectedFile();
try
{
FileWriter out = new FileWriter( fileName.getAbsolutePath() );
out.write( text.getText() );
out.close();
hasSaved = true;
openedFilePath = fileName.getAbsolutePath();
openedFileName = fileName.getName();
setTitle( openedFileName + "-记事本" );
}catch( Exception e )
{
JOptionPane.showMessageDialog( this, fileName.getName() + "文件不存在!\n请检查所给的文件名是否正确!",
"无效的文件名", JOptionPane.ERROR_MESSAGE );
return false;
}
return true;
}
private boolean saveFile()
{
if( openedFileName.equals( "" ) && openedFilePath.equals( "" ) )
{
return saveAsFile();
}
else
{
try
{
FileWriter out = new FileWriter( openedFilePath );
out.write( text.getText() );
out.close();
hasSaved = true;
setTitle( openedFileName + "-记事本" );
}catch( Exception e )
{
JOptionPane.showMessageDialog( this, openedFileName + "文件不存在!\n请检查所给的文件名是否正确!",
"无效的文件名", JOptionPane.ERROR_MESSAGE );
return false;
}
return true;
}
}
private boolean openFile()
{
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog( this );
if ( result == JFileChooser.CANCEL_OPTION )
return false;
File fileName = fileChooser.getSelectedFile();
try
{
char buf[] = new char[1024];
int len = 0;
StringBuffer str = new StringBuffer();
FileReader in = new FileReader( fileName.getAbsolutePath() );
while( (len = in.read( buf ) ) != -1 )
{
str.append( buf, 0, len );
}
in.close();
text.setText( str.toString() );
hasSaved = true;
openedFilePath = fileName.getAbsolutePath();
openedFileName = fileName.getName();
setTitle( openedFileName + "-记事本" );
}catch( Exception e )
{
JOptionPane.showMessageDialog( this, fileName.getName() + "文件不存在!\n请检查所给的文件名是否正确!",
"无效的文件名", JOptionPane.ERROR_MESSAGE );
return false;
}
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -