Ich habe eine JDialog
in NetBeans und einen benutzerdefinierten Konstruktor wie folgt erstellt:, Mein Problem istForce JDialog, um vor dem Verarbeiten von Daten sichtbar zu werden?
new AnimatedProgress(this, true, dataTable).setVisible(True);
als Java den Konstruktor aufruft, alle Codes:
public AnimatedProgress(java.awt.Frame parent, boolean modal, JTable table) {
super(parent, modal);
initComponents();
setLocationRelativeTo(parent);
progressLabel.setText("Collecting Table Data. . .");
Object[][] data = getJTableData(table); // Simple method to collect data and store in Object[][] array
progressLabel.setText("Processing Data. . .");
processData(data);
progressLabel.setText("Data Processed. . .");
}
Jetzt habe ich diese JDialog
wie genannt im Konstruktor wird zuerst ausgeführt und dann erscheint der Dialog mit dem Endergebnis.
Wie kann ich meinen JDialog
zuerst erscheinen lassen und dann die Methoden verarbeiten: getTableData()
und processData()
??
Blockieren Sie nicht den EDT (Event Dispatch Thread) - die GUI wird "eingefroren", wenn das passiert. Statt '' 'Thread.sleep (n)' aufzurufen, implementieren Sie einen Swing 'Timer' für wiederkehrende Aufgaben oder einen' SwingWorker' für lang andauernde Aufgaben. Siehe [Parallelität in Swing] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/) für weitere Details. –
@AndrewThompson - Ja Das ist eigentlich das Hauptproblem. Nun, ich kenne 'swing.Timer' gut, aber es gibt nur zwei Prozesse, die sich definitiv nicht wiederholen, und ich weiß nicht, wie man' SwingWorker' hier anwendet. . . Kannst du bitte diese Frage mit 'SwingWorker' Code beantworten? – Asif
@Asif: Bitte fragen Sie nicht nach Code - das liegt an Ihnen zu erstellen. Sehen Sie sich das Tutorial von Andrew Thompson an und versuchen Sie, Ihren eigenen Code zu erstellen. Dann, wenn Sie stecken bleiben, posten Sie Ihren Versuch hier. –