gpt4 book ai didi

java - 如何使用新信息更新 JDialog?

转载 作者:行者123 更新时间:2023-11-29 09:49:48 26 4
gpt4 key购买 nike

我有一个 Gui,它允许用户单击一个按钮并查看文本文件的内容。问题是文件可能会很大(超过 100,000 行数据)并且可能需要 15 秒以上的时间才能读取并显示在表格中。

文本文件格式示例:

*/
Account ID : 8 digit number
Money Charged : Integer < $10
Values separated by \t

/*


Account Id Money Charged
---------- --------------
731298 3
359412 5
624937 1

所以当按钮被点击时,它读取每一行并将每个 id 放入映射中并增加帐户的费用。

完成后,它将在 JDialog 中放置一个 JTable,其中包含信息。但是,一旦单击按钮,用户可能会对程序正在做什么感到困惑,因为在 JDialog 和 JTable 出现之前,我经历了超过 10-15 秒的延迟。

那么有没有办法让 JDialog 显示一个字符串,让用户知道它正在创建表? (我认为它可以使用 JDialog 方法之一来完成,例如 repaint()validate 但这些方法似乎没有用。

这是我认为应该完成的顺序:

//Psuedo-code
actionPerformed {
create frame
display label that lets user know its creating table
read text file
create map and place values
remove label
update dialog with table // unsure what to do to update it properly
}

所以我的总体问题很简单:是否可以通知用户它当前正在计算数据(通过 JDialog 中的 JLabel),一旦数据被读取,显示 JTable(通过更新 JDialog)?

如果需要,我可以提供来源。虽然不确定是否真的需要

编辑

public void actionPerformed(ActionEvent event) {
JFrame frame = new JFrame();
JDialog dialog = new JDialog(frame, "Account Charges", true);
JLabel label = new JLabel("Currently calculating the charges")

dialog.getContentPane().add(label); //add waiting label
dialog.setVisible(true);
readData(myFile); //read file and create table
dialog.getContentPane().remove(label); //waiting label no longer needed
dialog.getContentPane().add(myJtable); //update dialog with the table
}

最佳答案

1) 我有一个 Gui,它允许用户单击一个按钮并查看文本文件的内容。

  • 使用 CardLayout,如果您确实需要阻止或提供输入掩码以输入/修改/删除已显示或存在的值,我建议创建另一个容器

2) 问题是文件可能会很大(100,000 多行数据)并且可能需要 15 秒以上的时间才能读取并显示在表格中。

  • 除了内部修订,我不知道任何人可能想要检查或处理 10 万行,使用 SwingWorker 将 FileIO 填充到 TableModel,并为 JTable 创建分页

3)//伪代码

执行的 Action {

创建框架 - 不是 JFrame 重用现有的 JDialogCardLayout 肯定更好

显示让用户知道其创建表的标签 - 不知道怎么办

读取文本文件 - 使用 SwingWorker 和 JProgressBar,转换数据并将其放入 TableModel,使用批​​处理更新 TableModel f.e.每 50 行,查找 JTable 的分页,然后您将只显示所需的行数,而不是 100k,这可能很疯狂 :-)

create map and place values - 可能没有用,因为您将所有必需的信息存储在 TableModel 中

删除标签 - 不知道就这样吧

带表的更新对话框 - Jtable 可以立即从 SwinWorker 更新,Swing GUI 可以访问所有鼠标或键盘输入,从不等待,也不会延迟 10-15 秒

关于java - 如何使用新信息更新 JDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com