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

 我来答
雪飞潇潇
2017-10-03 · TA获得超过6273个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:851万
展开全部

JTextArea经常和JScrollPane 搭配使用.  这样可以通过滚动条显示更多的内容.

如果要使文本域显示最后1行, 有2种方式:

第一种方式:

操控垂直滚动条, 把垂直滚动条移动到最后面即可

JTextArea jta = new JTextArea();
jta.setText("添加很多行的文字");
JScrollPane jsp = new JScrollPane(jta);
jsp.getVerticalScrollBar().setValue(jsp.getVerticalScrollBar().getMaximum());//控制垂直滚动条到最后面

第二种方式:

操作文本域, 把文本域的位置设置到文本的最后.并让文本域获得焦点即可

JTextArea jta = new JTextArea();
jta.setText("添加很多行的文字");
JScrollPane jsp = new JScrollPane(jta);
//下面的代码就是移动到文本域的最后面
jta.selectAll();
if (jta.getSelectedText() != null) {
jta.setCaretPosition(jta.getSelectedText().length());
jta.requestFocus();
}

完整的代码

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JTPDemo extends JFrame implements ActionListener {
JTextArea jta;
JButton jbHome;
JButton jbEnd;
JScrollPane jsp;
final String NEW_LINE =System.getProperty("line.separator");
public JTPDemo() {

jbHome = new JButton("开始位置");
jbHome.addActionListener(this);
jbEnd = new JButton("最后一行");
jbEnd.addActionListener(this);


JPanel jpsouth = new JPanel();
jpsouth.add(jbHome);
jpsouth.add(jbEnd);


add(jpsouth, BorderLayout.SOUTH);

jta = new JTextArea();
jta.setLineWrap(true);
jta.append("开始"+NEW_LINE);
for (int i = 1; i < 50; i++) {
jta.append(i+NEW_LINE);
}
jta.append("最后一行");
jsp =new JScrollPane(jta);
add(jsp);
setTitle("文本域测试");
setSize(360, 320);
setLocationRelativeTo(null);//窗口居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

}

public static void main(String[] args) {
new JTPDemo();
}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jbHome) {//跳到开始的位置
jsp.getVerticalScrollBar().setValue(jsp.getVerticalScrollBar().getMinimum());

// jta.setCaretPosition(0);
// jta.requestFocus();
} else if (e.getSource() == jbEnd) {//跳到最后一行的位置
jsp.getVerticalScrollBar().setValue(jsp.getVerticalScrollBar().getMaximum());
// jta.selectAll();
// if (jta.getSelectedText() != null) {
// jta.setCaretPosition(jta.getSelectedText().length());
// jta.requestFocus();
// }

}
}
}

效果图

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式