我要在JTextArea里面显示日志,内容动态更新,加个滚动条,发现一直在上面不动,查了很多资料,有几种方法(这里就不举出来了),照搬下来没效果。//最上面
logText.setCaretPosition(0);
//最下面
logText.setCaretPosition(logText.getText().length());
先解释一下上面一句代码的作用,caret postion的意思是光标位置,那这句代码的作用就是显示JTextArea的最下面一行。
但是我的JTextArea是动态更新的,这就需要在JTextArea内容更新的监听器里面作文章了,我的代码如下:final JTextArea logText = new JTextArea();
logText.setSize(new Dimension(610,400));
logText.setBackground(Color.white);
logText.setLineWrap(true);
logText.setMargin(new Insets(5,5,10,10));
logText.getDocument().addDocumentListener(new DocumentListener(){
@Override
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
logText.setCaretPosition(logText.getText().length());
}
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
}
});
//添加滚动条
JScrollPane scroll = new JScrollPane(logText);
scroll.setSize(new Dimension(610,395));
contentPanel.add(scroll);
每次新增内容的时候,就显示JTextArea最后一行。至于JTextArea的内容监听器就是它的Document对象的DocumentListener。
-----------------------------------------------------
转载请注明来源此处
原地址:#