我要在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。
-----------------------------------------------------
转载请注明来源此处
原地址:#
发表