JAVA 如何使JScrollPane中的JTextArea自动滚动到最后一行?

时间:2022-11-02 15:06:10

1、要使JTextArea带有滚动条,需将JTextArea对象添加到JScrollPane中。

JTextArea logArea = new JTextArea(15, 35); //创建JTextArea对象
logArea.setWrapStyleWord(true); //换行方式:不分割单词
logArea.setLineWrap(true); //自动换行
//给JTextArea添加垂直滚动条
JScrollPane logScroll = new JScrollPane(logArea,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

2、要使JTextArea在更新内容时自动滚动到最后一行,可以通过对JScrollBar进行操作。

static JScrollBar scrollBar=logScroll.getVerticalScrollBar();
//每次需要在JTextArea增加String时,调用如下方法
private void refreshTextArea(String text){
logArea.append(text);

//在更新logArea后,稍稍延时,否则getMaximum()获得的数据可能不是最后的最大值,无法滚动到最后一行
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(TestServer.class.getName()).log(Level.SEVERE, null, ex);
}
scrollBar.setValue(scrollBar.getMaximum());
}