Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij slevové akce 80% výuky zdarma!
https://www.itnetwork.cz/csharp
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Luboš Běhounek Satik
Autoredaktor
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.