我有一个JTextArea
setEditable(false)
内不可编辑 ( JScrollPane
)我希望它自动滚动,以便当文本添加到该区域时最后一行可见(使用 append()
)。
我已经尝试过移动插入符号、选择所有文本并使用 DefaultCaret,但我无法让它滚动。有办法实现吗?
这是我尝试过的: https://gist.github.com/Greffin28/f38bb9c9ad8281de00e2
最佳答案
始终将 JTextArea
括在 JScrollPanel 中否则,当没有行大于窗口高度时,它将不起作用。
要设置滚动位置,请阅读这篇文章 How to adjust position of scroll in the scrollpane
示例代码:
JTextArea textArea = new JTextArea();
textArea.setEditable(false);
textArea.setText("abc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\nabc xyz \n\n\n\n\n");
JScrollPane scrollPane = new JScrollPane(textArea);
// now add scrollPane to your desired panel.
关于Java - 如果 setEditable(false) 则无法向下滚动 JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23429373/