• 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();
            }
    
        }
    }
  • 相关阅读:
    20220424 Java核心技术 卷1 基础知识 7
    20220424 Java核心技术 卷1 基础知识 45
    20220424 Java核心技术 卷1 基础知识 14
    20220424 Java核心技术 卷1 基础知识 9
    20220424 Java核心技术 卷1 基础知识 8
    20220424 Java核心技术 卷1 基础知识 13
    15、集合框架_ArrayList
    12接口
    18、集合框架_HashMap\TreeMap
    16、集合框架_LinkedList\Vertor
  • 原文地址:https://www.cnblogs.com/softidea/p/4662041.html
Copyright © 2020-2023  润新知