Java学习笔记――文本操作(记事本实现) (八)

2014-11-24 07:17:29 · 作者: · 浏览: 8
e();
fw.close();

}
}
else if(e.getActionCommand()=="退出")
{
if(!myarea.getText().equals(textContent))
{
int result=JOptionPane.showConfirmDialog(null,"文件内容已改变,确认保存退出吗?","警告",1);
if(result==JOptionPane.OK_OPTION)
{
save();
System.exit(0);
}
}
else
System.exit(0);
}
else if(e.getActionCommand()=="查找和替换")
{
//查找对话框
JDialog search=new JDialog(this,"查找和替换");
search.setSize(200, 100);
search.setLocation(450,350);
JLabel label_1=new JLabel("查找的内容");
JLabel label_2=new JLabel("替换的内容");
final JTextField textField_1=new JTextField(5);
final JTextField textField_2=new JTextField(5);
JButton buttonFind=new JButton("查找下一个");
JButton buttonChange=new JButton("替换");
JPanel panel=new JPanel(new GridLayout(2,3));
panel.add(label_1);
panel.add(textField_1);
panel.add(buttonFind);
panel.add(label_2);
panel.add(textField_2);
panel.add(buttonChange);
search.add(panel);
search.setVisible(true);


//为查找下一个 按钮绑定监听事件
buttonFind.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String findText=textField_1.getText();//查找的字符串

String textArea=myarea.getText();//当前文本框的内容
start=textArea.indexOf(findText,end);
end=start+findText.length();
if(start==-1)//没有找到
{
JOptionPane.showMessageDialog(null,"没找到"+findText,"记事本",JOptionPane.WARNING_MESSAGE);
myarea.select(start, end);
}
else
{
myarea.select(start,end);
}

}
});
//为替换按钮绑定监听时间
buttonChange.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String changeText=textField_2.getText();//替换的字符串
myarea.select(start, end);
myarea.replaceSelection(changeText);
myarea.select(start, end);
}
});




}
else if(e.getActionCommand()=="复制")
{
copy();
}
else if(e.getActionCommand()=="粘贴")
{
paste();
}
else if(e.getActionCommand()=="剪切")
{
cut();
}
else if(e.getActionCommand()=="删除")
{
delete();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}





}
public static void main(String[] args)
{
new Notepad().setVisible(true);
}
private void save()
{
try
{
File file=new File(filename);
FileWriter file_writer;

file_writer = new FileWriter(file);

BufferedWriter bw=new BufferedWriter(file_writer);
PrintWriter pw=new PrintWriter(bw);//如果直接向文件中输入而不是输入缓冲区,效率低下

pw.print(myarea.getText());
textContent=myarea.getText();
pw.close();
bw.close();
file_writer.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
private void cut()
{
copy();
delete();
}
private void copy()
{
if(myarea.getSelectedText()==null)
{
JOptionPane.showMessageDialog(null, "你没有选中任何文字!","记事本",JOptionPane.WARNING_MESSAGE);
}
Clipboard clipBoard= Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection stringSelection=new StringSelection(myarea.getSelectedText());