JDialog regelmäßig aktualisieren..
-
Also ich habe einen JDialog den ich gern als Status-Information nutzen möchte. Es wird ein Filetransfer aus einem Repository dargestellt, aber es ist nur eine graue Box zu sehen, die sich erst nach Ende der Kopieraktion richtig aufbaut.
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; public class MessageBox extends JDialog { private JLabel text; private JButton exit; public MessageBox() { this.setTitle("Nachrichtenfenster"); this.setVisible(false); this.setSize(200, 70); this.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); this.text = new JLabel(); this.text.setPreferredSize(new Dimension(200, 40)); this.getContentPane().add(this.text, BorderLayout.CENTER); this.exit = new JButton("OK"); this.exit.enable(false); this.exit.addActionListener(new ActionListener() { public void actionPerformed (ActionEvent e) { setVisible(false); } }); this.getContentPane().add(this.exit, BorderLayout.SOUTH); } public void setText (String pText) { this.text.setText(pText); this.text.repaint(); } public void toggleButton(boolean en) { this.exit.enable(en); } }
-
Hallo,
benutzt du die Klasse evtl. aus einem Thread heraus? Wenn ja musst du den Zugriff mit InvokeLater synchronisieren. Wenn nicht -bitte mehr Beschreibung
-
Ich hab in einem Fenster in einem Toolbar eine AbstractAction.
Diese ruft eine Methode checkout() auf in der ich durch einen Repositorypfad wandere und für jede Datei eine weitere Methode checkoutEntry() aufrufe. dort steht als allererstes ein this.mybox.setText(), welche ja Teil der o.g. Klasse ist.
-
DocJunioR schrieb:
Diese ruft eine Methode checkout() auf in der ich durch einen Repositorypfad wandere ...
Deine checkout()-Methode muß in einem separaten Thread laufen, damit
dier EDT (Event-Dispatch-Thread) die Möglichkeit erhält, deine Änderungen
an der GUI zu visualisieren:new Thread(new Runnable() { public void run() { checkout(); }}).start();