我是靠谱客的博主 玩命钢铁侠,最近开发中收集的这篇文章主要介绍Java Swing JTextArea,JScrollPane——实现数据的刷新到最底行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JTextArea:是纯文本的多行区域

JScrollPane:JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口

之前在使用JTextArea来实现数据在加入到文本域后,实现视图中文本始终在最新一行,查阅了相关资料,综合多个发现需要以下步骤方能实现,

  1. jTextPane.setCaretPosition(jTextPane.getDocument().getLength());
  2. 将添加数据的放在在线程中实现。

效果图如下:

这里写图片描述

代码如下:

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.


JScrollBar sbar = scrollPane.getVerticalScrollBar();
sbar.setValue(sbar.getMaximum());
2.

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——实现数据的刷新到最底行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部