JavaFX:TextArea光标移回新文本的第一行
我很难使用JavaFX:TextArea光标移回新文本的第一行,java,javafx,cursor,textarea,Java,Javafx,Cursor,Textarea,我很难使用TextArea的光标,在向TextArea添加新文本后,它一直被设置在第一行的位置0 问题背景 我有一个Textarea,当我添加足够的文本时,会出现一个滚动条,将新文本置于旧文本下方。但是,在这里一切正常之前,TextArea中的光标会回到顶部,当我频繁插入TextArea时,这会变得很烦人 下面是我每次添加新行的方式: void writeLog(String str) { textArea.setText(textArea.getText() + str + "\n")
TextArea
的光标,在向TextArea
添加新文本后,它一直被设置在第一行的位置0
问题背景
我有一个Textarea
,当我添加足够的文本时,会出现一个滚动条,将新文本置于旧文本下方。但是,在这里一切正常之前,TextArea
中的光标会回到顶部,当我频繁插入TextArea
时,这会变得很烦人
下面是我每次添加新行的方式:
void writeLog(String str) {
textArea.setText(textArea.getText() + str + "\n");
}
如何在每次插入后阻止
文本区域中的光标返回第一行 如果要附加到文本区域的末尾,可以使用而不是setText
:
textArea.appendText(str + "\n");
这将自动滚动到底部,并将插入符号置于文本末尾
注意:一点背景
在TextInputControl
的代码中,appendText
将调用insertText
作为insertText(getLength(),text)代码>因此textArea.appendText(str+“\n”)
和textArea.insertText(textArea.getLength(),str+“\n”)代码>是相等的insertText
将插入符号位置设置为insertationPosition+insertedText.getLength()
,这就是插入符号移到末尾的原因。如果要附加到TextArea
的末尾,可以使用而不是setText
:
textArea.appendText(str + "\n");
这将自动滚动到底部,并将插入符号置于文本末尾
注意:一点背景
在TextInputControl
的代码中,appendText
将调用insertText
作为insertText(getLength(),text)代码>因此textArea.appendText(str+“\n”)
和textArea.insertText(textArea.getLength(),str+“\n”)代码>是相等的insertText
将插入符号位置设置为insertationPosition+insertedText.getLength()
,这就是插入符号移到末尾的原因。我也遇到了同样的问题,我得到了解决方案。我正在编写一个记事本,在这里我必须打开文本文件,点击“打开”菜单项。在另一个函数中,我编写了代码
@FXML
private void openaFile(ActionEvent event) throws FileNotFoundException, IOException {
Stage window=new Stage();
FileChooser fc=new FileChooser();
File sf=fc.showOpenDialog(window);
if(sf!=null){
FileReader fr=new FileReader(sf);
Scanner sc=new Scanner(fr);
while(sc.hasNext()){
text.appendText(sc.next());
text.appendText("\n");
}
}
}我也有同样的问题,我得到了解决方案。我正在编写一个记事本,在这里我必须打开文本文件,点击“打开”菜单项。在另一个函数中,我编写了代码
@FXML
private void openaFile(ActionEvent event) throws FileNotFoundException, IOException {
Stage window=new Stage();
FileChooser fc=new FileChooser();
File sf=fc.showOpenDialog(window);
if(sf!=null){
FileReader fr=new FileReader(sf);
Scanner sc=new Scanner(fr);
while(sc.hasNext()){
text.appendText(sc.next());
text.appendText("\n");
}
}
}试用此解决方案:试用此解决方案:这不是约会网站;)或者换言之-没有地方联系,所以删除了链接。答案是:与公认的答案相比,没有什么,是吗?问题中没有任何内容与读取文件有关(无论如何,这很可能应该在后台线程中完成)。这不是一个约会网站;)或者换言之-没有地方联系,所以删除了链接。答案是:与公认的答案相比,没有什么,是吗?问题中没有任何与读取文件相关的内容(无论如何,这很可能应该在后台线程中完成)。这对我不起作用。这与我调用setText没有什么不同。(JavaFX 15)这对我不起作用。这与我调用setText没有什么不同。(JavaFX15)