zoukankan      html  css  js  c++  java
  • JTextArea Demo

    在往JTextArea中填充数据时,JTextArea上的滚动条也可以拖动。
    解决办法:
    主线程放在EDT中,fill JTextArea的操作放在另外一个线程中,这样fill操作与GUI上的操作就分离了,不会出现排除的情况

    package swing.jtextarea;
    
    import java.awt.BorderLayout;
    
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.SwingUtilities;
    
    public class JTextAreaFillDemo {
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    JTextAreaFrame frame = new JTextAreaFrame();
                    frame.setTitle(frame.getClass().getSimpleName());
                    frame.setSize(400, 300);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setVisible(true);
                    frame.setLocationRelativeTo(null);
                }
            });
        }
    }
    
    class JTextAreaFrame extends JFrame {
        private static final long serialVersionUID = 8390788205754221692L;
        private JTextArea jtextarea;
    
        public JTextAreaFrame() {
            jtextarea = new JTextArea();
            JScrollPane scrollPane = new JScrollPane(jtextarea);
            this.add(scrollPane, BorderLayout.CENTER);
            fillJTextArea();
        }
    
        public void fillJTextArea() {
            new Thread(new Runnable() {// 启动数据获取,更新显示进程
                        public void run() {
                            JTextAreaFiller d = new JTextAreaFiller(jtextarea);
                            d.fillJtextArea();
                        }
                    }).start();
        }
    
    }
    package swing.jtextarea;
    
    import java.util.concurrent.TimeUnit;
    
    import javax.swing.JTextArea;
    
    public class JTextAreaFiller {
        private JTextArea jTextArea;
    
        public JTextAreaFiller(JTextArea jTextArea) {
            this.jTextArea = jTextArea;
        }
    
        public void fillJtextArea() {
            try {
                for (int i = 0; i < 10000; i++) {
                    System.out.println("当前数据为:" + i);
                    jTextArea.append("当前数据为:" + i + "
    "); // 调用主窗口的jtextarea进行添加数据,显示
                    TimeUnit.SECONDS.sleep(1);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
    
        }
    }
  • 相关阅读:
    Android研究之游戏开发处理按键的响应
    C语言指针的初始化和赋值
    Cloudera CDH 5集群搭建(yum 方式)
    未将对象引用设置到对象的实例--可能出现的问题总结
    内存泄漏以及常见的解决方法
    都能看懂的嵌入式linux/android alsa_aplay alsa_amixer命令行使用方法
    Life is hard!
    EasyUI基础入门之Resiable(可缩放)
    Android -- Looper.prepare()和Looper.loop() —深入版
    vi 命令 使用方法
  • 原文地址:https://www.cnblogs.com/softidea/p/4662041.html
Copyright © 2011-2022 走看看