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();
            }
    
        }
    }
  • 相关阅读:
    Struts1简单开发流程梳理
    更改数据库字符集编码引起的问题、textarea标签输出内容时不能顶格(左对齐)输出
    FineReport基本使用
    Navicat for MySQL笔记1
    Hibernate(十)
    Elasticsearch NEST 控制字段名称命名格式
    ckeditor 敏感词标记显示处理方法
    Elasticsearch .Net Client NEST 多条件查询示例
    Elasticsearch .Net Client NEST 索引DataSet数据
    一个很简单的SqlServer生成常用C#语句工具的诞生
  • 原文地址:https://www.cnblogs.com/softidea/p/4662041.html
Copyright © 2011-2022 走看看