我试图做的是,如果当我调用该函数时,该行在 JTextArea 中插入符号所在的位置消失。我在第一行情况下实现了,但在中间和最后一行情况下很难做到。
这是我所做的完全失败的代码。
private void DeleteOptionActionPerformed(ActionEvent e) {
String[] lines = area.getText().split("\n");
int caret = area.getCaretPosition();
int beforeLocation = 0;
for(int i = 0; i < area.getLineCount(); i++) {
try {
if(i == 0) {
if(caret <= lines[i].length())
area.replaceRange(null, area.getLineStartOffset(i), area.getLineEndOffset(i));
}
else {
if(caret <= lines[i].length() && caret > lines[beforeLocation].length()) {
area.replaceRange(null, area.getLineStartOffset(i), area.getLineEndOffset(i));
}
else {
caret -= lines[i].length();
beforeLocation = i;
continue;
}
}
} catch(BadLocationException e1) {
e1.printStackTrace();
}
caret -= lines[i].length();
beforeLocation = i;
}
}
最佳答案
尝试使用Utilities
类。
不需要任何循环逻辑。代码应该类似于:
int offset = textArea.getCaretPosition();
int start = Utilities.getRowStart(...);
int end = Utilities.getRowEnd(...);
textArea.replaceRange("", start, end);
关于java - 如何删除插入符号所在的 TextArea 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48832069/