У меня есть 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
Так что, когда кнопка нажата, она читает каждую строку и помещает каждый идентификатор в карту и увеличивает расходы по счетам.
Как только он будет закончен, он поместит JTable внутри JDialog с информацией. Однако, как только нажимается кнопка, пользователь может быть смущен в отношении того, что делает программа, поскольку я испытал до 10-15 секунд задержки до появления JDialog & JTable.
Итак, есть способ сделать 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
}
Так что мой общий вопрос прост: можно ли информировать пользователя о том, что в настоящее время вычисления данных (с помощью JLabel в JDialog) и после того, как данные считываются, отображение 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
@mKorbel Я предположил, что кто-то попросите SSCCE, поэтому я добавил эту последнюю строку. Я все еще не думаю, что нужно ответить, можно ли обновить JDialog с новой информацией. Но я собрал простую программу, так что есть SSCCE – WilliamShatner
до вас, конечно, вы не можете этого сделать, потому что вопрос очень хорошо описан :-) – mKorbel