我有一个 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()
orvalidate
但那些似乎并没有奏效。
这是我认为应该完成的顺序:
//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
}