Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [JAVA] JButton disabilitati si (auto)abilitano

    Salve!

    ho creato una applet nel quale fra i vari componenti grafici vi sono
    dei bottoni. all'avvio dell'applet alcuni di questi bottoni sono disabilitati.
    Di norma cliccando su un bottone disabilitato non dovrebbe succedere
    nulla, ma nella mia applet se clicco sul bottone B disabilitato mi abilita C
    e se clicco su C disabilitato si autoabilita.
    Il comportamento è assai strano, ma bisogna tener conto che nel metodo
    invocato dal metodo di B vi è una istruzione che abilita C e nel metodo invocato
    dal listener di C c'è un metodo che o abilita.
    Grazie!!!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    E se non posti il codice noi come possiamo verificare dove stai sbagliando? Perchè è garantito che se un pulsante è disabilitato non fa nulla... a meno che non sia il programmatore a fargli fare qualcosa.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ringrazio per la disponibilità.... sono riuscito a risolvere da solo.... il problema era nel fatto che usavo un listener non adatto

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da matteo martis
    ringrazio per la disponibilità.... sono riuscito a risolvere da solo.... il problema era nel fatto che usavo un listener non adatto
    Era ciò che sospettavo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260
    Scusatemi se riprendo qualcosa di vecchio, ma non essendoci la soluzione la chiedo
    Praticamente ho dei bottoni disabilitati ma se ci clicco sopra il codice viene comunque eseguito come mai?
    Questo è il pezzetto di codice che ho usato
    codice:
    private JButton btnAnnulla = new JButton("Annulla");
    btnAnnulla.setEnabled(false);
    .
    .
    .
    btnAnnulla.addMouseListener(new MouseAdapter(){
       public void mouseClicked(MouseEvent e){
          System.out.println("Funziona");
       }
    });
    Cioè nonostante lo abbia messo a false e il bottone non sia cliccabile se ci clicco sopra viene stampato a video "Funziona".

    Non devo usare la classe MouseAdapter?



  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Tu stai usando un MouseListener. E il MouseListener se ne frega dello stato del pulsante in quanto si interessa solo del click del mouse.
    Devi usare un ActionListener.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Fix87 Visualizza il messaggio
    Praticamente ho dei bottoni disabilitati ma se ci clicco sopra il codice viene comunque eseguito come mai?
    Perché è proprio così ... la disabilitazione non impedisce di ricevere gli eventi del mouse che sono di più "basso" livello.

    Quote Originariamente inviata da Fix87 Visualizza il messaggio
    Non devo usare la classe MouseAdapter?
    Su pulsanti/menù generalmente si usa ActionListener che rappresenta il concetto più astratto di "azione". Per casi particolari si possono usare ChangeListener o ItemListener mentre molto più raramente MouseListener (es. caso estremo: il dragging di un pulsante).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Tu stai usando un MouseListener. E il MouseListener se ne frega dello stato del pulsante in quanto si interessa solo del click del mouse.
    Devi usare un ActionListener.
    Ti ringrazio

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Perché è proprio così ... la disabilitazione non impedisce di ricevere gli eventi del mouse che sono di più "basso" livello.
    Ah ecco perché!

    Quote Originariamente inviata da andbin Visualizza il messaggio
    Su pulsanti/menù generalmente si usa ActionListener che rappresenta il concetto più astratto di "azione". Per casi particolari si possono usare ChangeListener o ItemListener mentre molto più raramente MouseListener (es. caso estremo: il dragging di un pulsante).
    Il mouseListener l'ho uso per il MouseEntered e MouseExited che devono fare il loro lavoro anche quando questo è disabilitato! Infatti ora che ci penso questi due metodi funzionano anche con il pulsante disabilitato!

    Questo forum non finirò mai di ringraziarlo, esperti in ogni settore!!!

    Grazie ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.