陈建华的博客
专注web开发
JTextArea更新时滚动条自动在最上面或者在最下面的方法
2015-09-11 14:16:17   阅读2771次

我要在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。



-----------------------------------------------------
转载请注明来源此处
原地址:#

-----网友评论----
暂无评论
-----发表评论----
微网聚博客乐园 ©2014 blog.mn886.net 鲁ICP备14012923号   网站导航