我是靠谱客的博主 玩命钢铁侠,最近开发中收集的这篇文章主要介绍Java Swing JTextArea,JScrollPane——实现数据的刷新到最底行,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
JTextArea:是纯文本的多行区域
JScrollPane:JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口
之前在使用JTextArea来实现数据在加入到文本域后,实现视图中文本始终在最新一行,查阅了相关资料,综合多个发现需要以下步骤方能实现,
- jTextPane.setCaretPosition(jTextPane.getDocument().getLength());
- 将添加数据的放在在线程中实现。
效果图如下:
代码如下:
package com.acconsys.test;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Test1 extends JFrame {
private JTextArea jTextPane;
private JScrollPane scrollPane;
public Test1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 300);
setLocationRelativeTo(null);
JPanel panel = new JPanel();
getContentPane().add(panel, BorderLayout.NORTH);
JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Thread thread = new MyThread(jTextPane);
thread.start();
}
});
panel.add(btnNewButton);
jTextPane = new JTextArea();
scrollPane = new JScrollPane();
scrollPane.setViewportView(jTextPane);
scrollPane.setAutoscrolls(true);
getContentPane().add(scrollPane, BorderLayout.CENTER);
}
public static void main(String[] args) {
Test1 test1 = new Test1();
test1.setVisible(true);
}
class MyThread extends Thread {
JTextArea jTextPane;
public MyThread(JTextArea jTextPane) {
this.jTextPane = jTextPane;
}
@Override
public void run() {
for (int i = 0; i < 30; i++) {
jTextPane.setText(jTextPane.getText() + "ddd" + i + "n");
jTextPane.setCaretPosition(jTextPane.getDocument().getLength());
try {
sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
说明:
在网上也查了些资料,其中设置线程来写入数据是毋庸置疑的啦,那么对于设置光标到最后一行除了jTextPane.setCaretPosition(jTextPane.getDocument().getLength());还有一下2种可以替代它
1.
2.
JScrollBar sbar = scrollPane.getVerticalScrollBar();
sbar.setValue(sbar.getMaximum());
int height = 20;
Point p = new Point();
p.setLocation(0, jTextPane.getLineCount() * height);
scrollPane.getViewport().setViewPosition(p);
最后
以上就是玩命钢铁侠为你收集整理的Java Swing JTextArea,JScrollPane——实现数据的刷新到最底行的全部内容,希望文章能够帮你解决Java Swing JTextArea,JScrollPane——实现数据的刷新到最底行所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复