Java 在jpanel中快速添加大量jlabel

Java 在jpanel中快速添加大量jlabel,java,mysql,swing,user-interface,Java,Mysql,Swing,User Interface,嗨,我正在使用JavaSwing制作JavaGUI应用程序,从mysql获取数据,然后将每一行放入JLabel,并将其添加到特定的Jpanel中 我的问题是,当我获取的行数超过4k时,应用程序需要0.3分钟才能完成上述过程,并且时间会随着行数的增加而增加 我从mysql计算了延迟,每60k行延迟20.26秒,当我计算应用程序时,同样数量的行延迟几乎为2.5分钟 因此,我的问题是,是否有任何东西可以加速我的应用程序(mysql、java)。对象创建是一个昂贵的过程。我建议不要为从数据库中获取的每个

嗨,我正在使用JavaSwing制作JavaGUI应用程序,从mysql获取数据,然后将每一行放入JLabel,并将其添加到特定的Jpanel中

我的问题是,当我获取的行数超过4k时,应用程序需要0.3分钟才能完成上述过程,并且时间会随着行数的增加而增加

我从mysql计算了延迟,每60k行延迟20.26秒,当我计算应用程序时,同样数量的行延迟几乎为2.5分钟


因此,我的问题是,是否有任何东西可以加速我的应用程序(mysql、java)。

对象创建是一个昂贵的过程。我建议不要为从数据库中获取的每个字段创建单独的标签。您选择不使用JTable/TableModel有什么原因吗?这似乎是表示数据库中数据表的最佳工具。有很多关于如何在web上使用JTable的例子,所以我在这里不进行描述

作为确定JLabel创建是否导致您的问题的实验,请为每行创建一个标签,而不是为每个字段创建一个JLabel,然后看看这能改善多少情况

我也赞同mKorbel的建议,如果需要立即响应,可以批量处理。这允许您在查询和显示其余可用信息时向用户提供一些即时数据

如果用户在做出决策或得出所需结论之前不需要所有信息(即,首先解决导致他们查询的问题),那么这对大型数据集非常有用。如果是这种情况,最好使用忙碌指示器


祝你好运

对象创建是一个昂贵的过程。我建议不要为从数据库中获取的每个字段创建单独的标签。您选择不使用JTable/TableModel有什么原因吗?这似乎是表示数据库中数据表的最佳工具。有很多关于如何在web上使用JTable的例子,所以我在这里不进行描述

作为确定JLabel创建是否导致您的问题的实验,请为每行创建一个标签,而不是为每个字段创建一个JLabel,然后看看这能改善多少情况

我也赞同mKorbel的建议,如果需要立即响应,可以批量处理。这允许您在查询和显示其余可用信息时向用户提供一些即时数据

如果用户在做出决策或得出所需结论之前不需要所有信息(即,首先解决导致他们查询的问题),那么这对大型数据集非常有用。如果是这种情况,最好使用忙碌指示器

祝你好运

从mysql获取数据,然后将每一行放入JLabel并添加 这对某些Jpanel来说是一个挑战

  • 使用
    JTable
    ,搜索
    resultsetablemodel
    TableFromDatabase
我的问题是,当我获取的行数超过4k时,应用程序需要0.3分钟 要完成上述过程,时间会随着 行数增加

  • 4k
    超越了人类在标准工作时间使用大量数据的能力
我从mysql计算了延迟,每60k延迟20.26秒 当我计算应用程序的行数时,整个过程几乎是2.5分钟 行数相同

  • 创建一个批处理逻辑,从
    SwingWorker
    运行
    ResultSet
    publish()
    每隔
    100行到
    ResultSetTableModel
    TableFromDatabase
    ,然后用户可以立即看到前100行,其余行是从Swing worker管理的工作线程添加的

  • 可以轻松、简单地将一个大型查询拆分为一组查询,创建带分页的SQL查询

从mysql获取数据,然后将每一行放入JLabel并添加 这对某些Jpanel来说是一个挑战

  • 使用
    JTable
    ,搜索
    resultsetablemodel
    TableFromDatabase
我的问题是,当我获取的行数超过4k时,应用程序需要0.3分钟 要完成上述过程,时间会随着 行数增加

  • 4k
    超越了人类在标准工作时间使用大量数据的能力
我从mysql计算了延迟,每60k延迟20.26秒 当我计算应用程序的行数时,整个过程几乎是2.5分钟 行数相同

  • 创建一个批处理逻辑,从
    SwingWorker
    运行
    ResultSet
    publish()
    每隔
    100行到
    ResultSetTableModel
    TableFromDatabase
    ,然后用户可以立即看到前100行,其余行是从Swing worker管理的工作线程添加的

  • 可以轻松、简单地将一个大型查询拆分为一组查询,创建带分页的SQL查询


是否需要同时查看所有标签?你可以有多个页面,每个页面只需要抓取,比如说10-20行。是的,我会抓取,但在搜索和阅读了2个答案后,我不会使用JLabel,我会使用JTable,因为@SequestEclyde很多对象创建都很昂贵,而且方法错误,thnx伙计们。你需要同时查看所有标签吗?你可以有多个页面,每个页面只需要抓取,比如说10-20行。是的,我会抓取,但在搜索和阅读了这两个答案后,我不会使用JLabel,我会使用JTable,因为@SequestEclyde很多对象创建都很昂贵,而且方法错误,thnx伙计们。谢谢,在你的最后一个答案中,我有一个问题,你的意思是我将每100行作图,然后更新