加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java Swing应用程序中的次要重构导致巨大的减速

发布时间:2020-12-15 08:37:35 所属栏目:Java 来源:网络整理
导读:我的任务是重构我们在这里的 Java Swing应用程序非常苛刻.我的工作是清理代码并使其更具动态性,因为我们将开始将其与第二个项目一起使用,并且需要能够适当调整.包含一个窗口的一小部分 一个按钮 用于选择日期的JFormattedTextField. 显示数据的3X4 JLabel表.
我的任务是重构我们在这里的 Java Swing应用程序非常苛刻.我的工作是清理代码并使其更具动态性,因为我们将开始将其与第二个项目一起使用,并且需要能够适当调整.包含一个窗口的一小部分

>一个按钮
>用于选择日期的JFormattedTextField.
>显示数据的3X4 JLabel表.

最初编写此文件的人只使用GridBagLayout JPanel然后硬编码所有内容,包括表的标题和行标签,并在动态数据位置留下空的JLabel.当接收到动态信息时,使用文本数据调用setText.我的重构的一部分将导致整个表在维度和内容上是动态的,所以我决定使用GridLayout使表成为子面板,并使用这段代码动态设置内容和维度:

    public void updateInfoPanel(ArrayList rows) {
        System.out.println("Updating Info Panel!");
        //genericInfo is the new sub panel in question.
        genericInfo.removeAll();
        GridLayout layout = new GridLayout();
        layout.setColumns(rows.get(0).length);
        layout.setRows(rows.size());
        genericInfo.setLayout(layout);
        for(String[] row : rows) {
            for(String element : row) {
                genericInfo.add(new Label(element));
            }
        }
    }

我已经证实,每次创建窗口只会调用一次,但整个窗口现在非常缓慢.对于用于在几分之一秒内响应的帧的其他部分中的点击,可能需要> 5秒钟.有谁知道会导致什么?有什么关于GridLayouts的东西,我不明白?

解决方法

尝试在EDT上调用此代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读