Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: "neposloupné" volání metod

Aktivity
Avatar
jaryn
Člen
Avatar
jaryn:16.8.2013 18:35

Zdravím!
Po stisknutí tlačítka volám metodu send()
ta vypadá zhruba takto:

private void send() {
        try {
            jButton1.setEnabled(false);
            connect = new AdMailerConnector(...);
            ...
            AdMailer mailer = new AdMailer(...);
            mailer.send();
        } catch (MessagingException | IOException ex) {
                     Logger.getLogger(AdMailerWindowMain.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

Vtip je v tom, že chci, aby se po stisku tlačítko jButton1 disablovalo. Bohužel k tomu dojde až po odeslání emalu.
Proč tomu tak je?
Díky za vysvětlení

 
Odpovědět
16.8.2013 18:35
Avatar
Odpovídá na jaryn
Luboš Běhounek Satik:16.8.2013 19:09

Protože samotná změna stavu komponenty ještě komponentu nepřekreslí, to se děje až při zpracovávání fronty zpráv (tipuji to na WM_PAINT) a to se děje až po skončení funkce stisku tlačítka, protože to běží v jednom vlákně.

Nevím, jak to řeší Java, ale zkus hned po řádku

jButton1.setEnabled(false);

volat nějakou obdobu C# Application.Do­Events() nebo Delpháckého Application.Pro­cessMessages() (google napoví - "Java Application.Pro­cessMessages()").

Editováno 16.8.2013 19:10
Nahoru Odpovědět
16.8.2013 19:09
https://www.facebook.com/peasantsandcastles/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.