Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) problema con i listeners

    Ho una classe SettingsDialog che si occupa di disegnare un pannello con 3 pulsanti. Due di questi pulsanti sono JButton (ok e cancel) ed uno è un JCheckBox (ck)
    Ho una classe SettingsListeners che implementa l'interfaccia actionListeners. Questa classe la devo associare ai bottoni ok e cancel della classe precedente.
    Da una terza classe voglio assemblare il mio programma quindi devo associare il listeners al pannello grafico con codice di questo tipo:

    SettingsListeners sl = new SettingsListeners();
    SettingsDialog sd = new SettingsDialog( sl );

    Però ho il seguente problema:
    La classe SettingsListeners ha il seguente codice

    public void actionPerformed(ActionEvent event) {

    if (event.getActionCommand().equals("OK")) {

    boolean state = ck.isSelected();

    if (state)
    fai qualcosa..
    else
    fai qualcosa...
    }
    }


    Siccome nel codice della classe SettingsListeners utilizzo la variabile ck, definita nella classe SettingsDialog, non posso istanziare la classe SettingsListeners finchè non ho istanziato la classe SettingsDialog.
    La classe SettingsDialog ha il seguente del codice

    public SettingDialog(SettingsListeners sl) {
    JCheckBox ck = new JCheckBox ();
    JButton ok = new JButton();
    JButton cancel = new JButton();
    ok.addActionListeners( sl )
    cancel.addActionListeners( sl )
    }

    Siccome nel codice della classe SettingsDialog utilizzo la classe SettingsListeners che non posso istanziare per il motivo detto prima sono bloccato.
    Come faccio a risolvere questo problema?

  2. #2
    Credo il problema sia differente. Tu usi ck nella classe SettingsListeners mentre ck e' un attributo di SettingsDialog.
    ciao ciao !!
    _______________
    home : cristianolongo.altervista.org
    e-mail : cristiano_longo@yahoo.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    e quindi? cosa suggerisci?

  4. #4
    metti l'attributo

    codice:
    SettingsListeners sl;
    nella classe SettingsDialog, e settalo nel costruttore. Quando ti riferisci a ck userai allora sl.ck.
    ciao ciao !!
    _______________
    home : cristianolongo.altervista.org
    e-mail : cristiano_longo@yahoo.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Dici così?

    La classe SettingsListeners ha il seguente codice

    public void actionPerformed(ActionEvent event) {

    if (event.getActionCommand().equals("OK")) {

    boolean state = sl.ck.isSelected();

    if (state)
    fai qualcosa..
    else
    fai qualcosa...
    }
    }


    La classe SettingsDialog ha il seguente del codice
    //attributi
    SettingListeners sl;

    public SettingDialog(SettingsListeners sl) {
    this.sl = sl
    JCheckBox ck = new JCheckBox ();
    JButton ok = new JButton();
    JButton cancel = new JButton();
    ok.addActionListeners( sl )
    cancel.addActionListeners( sl )
    }

    ma funziona?

  6. #6
    Dipende da cosa deve fare. Il costruttore viene invocato prima di actionPerformed, motivo per il quale quest'ultimo trova sl già inizializzato.
    ciao ciao !!
    _______________
    home : cristianolongo.altervista.org
    e-mail : cristiano_longo@yahoo.it

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    come fa a funzionare questa riga di codice

    boolean state = sl.ck.isSelected();

    ck mica è un attributo di sl, è un attributo di sd

  8. #8
    corretta osservazione.
    ciao ciao !!
    _______________
    home : cristianolongo.altervista.org
    e-mail : cristiano_longo@yahoo.it

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    quindi?

  10. #10
    Crea un attributo ck nel SettingListener e inizializzalo nel costruttore di SettingDialog.
    ciao ciao !!
    _______________
    home : cristianolongo.altervista.org
    e-mail : cristiano_longo@yahoo.it

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 © 2024 vBulletin Solutions, Inc. All rights reserved.