Innerhalb der Methode actionPerformed einen JButton, habe ich den folgenden Code:Wie man Knopfänderungen macht Repaint -during-Methode, nicht nach?
btnLogin.setText("Logging In...");
btnLogin.setPreferredSize(new Dimension(110, 29));
btnLogin.setEnabled(false);
//more stuff here, irrelevant to this
Dies funktioniert, aber es dauert nur visuelle Wirkung (wird neu gestrichen), sobald das Verfahren abgeschlossen ist.
Wenn ich in dem Bereich // more stuff here Code habe, der lange dauert, werden die Auswirkungen der Änderungen von BtnLogin erst wirksam, wenn dieser Code abgeschlossen ist.
Ich habe versucht, die Eingabe:
this.revalidate();
this.repaint();
Direkt nach den ersten drei Zeilen und mehreren anderen Lösungen, um zu versuchen, das verdammte Ding zu zwingen, während des Verfahrens neu zu zeichnen, aber egal was passiert, es passiert nur bei das Ende!
Eine andere Sache, die ich bemerkt habe, ist, dass, wenn ich ein JOptionPane in der Mitte der Methode aufrufen, der Rahmen (im Hintergrund) neu streichen wird, so dass das interessant ist.
Was passiert automatisch am Ende der Methode, die ich aufrufen muss, damit es während der Methode geschieht?
Vielen Dank im Voraus!
Wie ändere ich die Schaltflächeneigenschaft, die Zeilen im Swing-Ereignisthread statt im Methodenthread ändert? – Heaney
@Heaney: Ich erklärte, was Sie oben tun müssen. –
@Heaney: und du ** nimmst ** den Änderungscode für den Swing Event-Thread. Was Sie tun müssen, ist den lang laufenden Code von diesem Thread abzurufen. –