ユーザーがボタンをクリックしてテキストファイルの内容を表示できる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メソッドの1つを使用して実行されると思いました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を介して)、データが読み取られたら、(JDialogを更新して)JTableを表示することはできますか?
必要に応じて、ソースを提供できます。本当に必要かどうかはわかりませんが
編集
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
}