我有一个Gui允许用户点击一个按钮并查看文本文件的内容。问题是文件可能相当大(超过100,000行数据),并且可能需要15秒钟才能读取并显示在表格中。如何用新信息更新JDialog?
文本文件的格式的例子:
*/
Account ID : 8 digit number
Money Charged : Integer < $10
Values separated by \t
/*
Account Id Money Charged
---------- --------------
731298 3
359412 5
624937 1
所以单击该按钮时,它读取每一行,并把每个ID成地图,并增加了账户的费用。
一旦它完成,它会将一个JTable放置在一个JDialog中,并带有这些信息。但是,一旦按钮被点击,用户可能会对程序正在做什么感到困惑,因为在JDialog出现之前,我经历了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
}
'如果需要,我可以提供源代码。不确定它是否真的需要,是的,有天空中有星星的选项,哪一个是你的,请用[SSCCE](http://sscce.org/)编辑你的问题 – mKorbel 2012-04-11 20:12:27
@mKorbel我假设有人会请求SSCCE这就是为什么我添加了最后一行。我仍然认为不需要回答是否能够用新信息更新JDialog。但我会把一个简单的程序放在一起,所以有一个SSCCE – WilliamShatner 2012-04-11 20:16:18
由你决定,当然你不能这么做,因为问题描述得很好:-) – mKorbel 2012-04-11 20:20:07