set editor kit方法调用时如何保留之前的Undoable Edit Listener
How to retain previous Undoable Edit Listener When set editor kit mehtod is called
我已经在 JTextPane 中注册了 Undoable Edit Listener。
当编辑器工具包保持不变时效果很好。
但是当我打开另一个不同扩展名的文件时。我必须更改文本窗格编辑器工具包。
注意:实际上textArea是JTextPane的一个实例
if(ext.equals(".txt")){
try{
// textArea.setText(null);
textArea.setEditorKit(defaultkit);
String read=reader.readLine();
StringBuilder text = new StringBuilder();
int offset =0;
//int test=0;
while (read !=null){
text.append(read);
text.append('\n');
read = reader.readLine();
}
textArea.setText(text.toString());
}catch(IOException e ){}
//catch(BadLocationException e ){}
}
else{
try {
FileInputStream fis = new FileInputStream(path);
if(ext.equals(".rtf")){
textArea.setEditorKit(ek);
textArea.getEditorKit().read(fis, textArea.getDocument(), 0);
}
我发现当调用 setEditorKit 方法时,注册文档侦听器停止执行它的功能。
当我注册另一个可撤消的编辑监听器时,它将不起作用
textArea.setEditorKit(ek);
textArea.addUndoableEditListener(new MyListener());
I have to change the textpane editor kit
不,你不知道。
您只需使用:
textPane.setText("");
清除数据。
当然,如果您这样做,两个文件将使用同一个侦听器。所以你想在每次更改文件时替换编辑侦听器。
我找到了问题及其解决方案
我在注册另一个文档侦听器时使用了新的文档侦听器实例
MyDocumentListener dl = new MyDocumentListener();
textArea.getDocument().addUndoableEditListener(new MyDocumentListener());
相反,我应该每次都使用它:
textArea.getDocument().addUndoableEditListener(dl);
我已经在 JTextPane 中注册了 Undoable Edit Listener。
当编辑器工具包保持不变时效果很好。
但是当我打开另一个不同扩展名的文件时。我必须更改文本窗格编辑器工具包。
注意:实际上textArea是JTextPane的一个实例
if(ext.equals(".txt")){
try{
// textArea.setText(null);
textArea.setEditorKit(defaultkit);
String read=reader.readLine();
StringBuilder text = new StringBuilder();
int offset =0;
//int test=0;
while (read !=null){
text.append(read);
text.append('\n');
read = reader.readLine();
}
textArea.setText(text.toString());
}catch(IOException e ){}
//catch(BadLocationException e ){}
}
else{
try {
FileInputStream fis = new FileInputStream(path);
if(ext.equals(".rtf")){
textArea.setEditorKit(ek);
textArea.getEditorKit().read(fis, textArea.getDocument(), 0);
}
我发现当调用 setEditorKit 方法时,注册文档侦听器停止执行它的功能。
当我注册另一个可撤消的编辑监听器时,它将不起作用
textArea.setEditorKit(ek);
textArea.addUndoableEditListener(new MyListener());
I have to change the textpane editor kit
不,你不知道。
您只需使用:
textPane.setText("");
清除数据。
当然,如果您这样做,两个文件将使用同一个侦听器。所以你想在每次更改文件时替换编辑侦听器。
我找到了问题及其解决方案
我在注册另一个文档侦听器时使用了新的文档侦听器实例
MyDocumentListener dl = new MyDocumentListener();
textArea.getDocument().addUndoableEditListener(new MyDocumentListener());
相反,我应该每次都使用它:
textArea.getDocument().addUndoableEditListener(dl);