我正在寫一個jTextPane的getActionMap的行動,當我鍵入')'如果在插入位置有一個')'行動覆蓋符號,否則它通常輸入')'。 這是代碼:找出如果在jTextPane中的某個位置有一個特定的字符[java]
Action action1 = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
char bracket = ')';
try {
int position = jTextPane1.getCaretPosition();
if (jTextPane1.getDocument.getText(position,1)== ")") {
jTextPane1.getDocument().remove(position, 1);
jTextPane1.getDocument().insertString(position, ")", null);
} else {
jTextPane1.getDocument().insertString(position, ")", null);
}
} catch (Exception e1) {}
}
};
String key1 = "typed)";
jTextPane1.getInputMap().put(KeyStroke.getKeyStroke(key1), key1);
jTextPane1.getActionMap().put(key1, action1);
}
我不明白爲什麼,即使的「如果」是真布爾,它不會在IF的路要走。你可以幫我嗎?
你有沒有想過使用'DocumentFilter'? – MadProgrammer
不,我沒有。我認爲KeyStroke的使用對於這種任務是很好的。我如何在這裏使用DocumentFilter? – Pino
'jTextPane1.toString()'?我很驚訝你還沒有碰到索引超出範圍的例外。我想你打算使用'jTextPane1.getText()' – MadProgrammer