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

    [Java, Swing] Errore con metodi getValue e getText in un actionPerformed

    salve a tutti, non è la prima volta che posto sul forum, anche se non ricordando più i dati ho dovuto creare un altro account

    vengo al dunque

    ho una classe che estende un JFrame e che implementa un actionlistener, all'interno del frame ho dei componenti e dovrei verificare il loro valore a seguito dell'attivazione di un pulsante

    questo è un codice d'esempio del gestore eventi:
    codice:
    public void actionPerformed (ActionEvent e) 	
    { 		
     if (e.getSource () == cancel) 		
     { 			
      this.dispose ();
     } 		
     else if (e.getSource () == ok) 		
     {
      System.out.println(c1.getValue ());
     } 	
    }
    c1 è un JSlider, è il suo valore è già definito (il println è solo una prova, verrà sostituito in futuro)

    il codice viene compilato senza errori ma quando eseguo il programma e premo il pulsante ok mi viene fuori una bella eccezione


    stessa cosa se invece di cercare di accedere al valore di uno slider cerco di accedere al valore di un JTextField (con getText ())

    qualcuno sa dirmi il perché di questo errore e come fare ad accedere a queste informazioni dentro l'actionEvent senza incorrere in questo problema?


    sapete dirmi inoltre come faccio a distinguere quale tra più slider genera un evento changeevent?


    Testo completo dell'errore:
    codice:
    >java ProSetUp Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 	
    at ProSetUp.actionPerformed(ProSetUp.java:94) 	
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 	
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 	
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 	
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 	
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 	
    at java.awt.Component.processMouseEvent(Component.java:6134) 	
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) 	
    at java.awt.Component.processEvent(Component.java:5899) 	
    at java.awt.Container.processEvent(Container.java:2023) 	
    at java.awt.Component.dispatchEventImpl(Component.java:4501) 	
    at java.awt.Container.dispatchEventImpl(Container.java:2081) 	
    at java.awt.Component.dispatchEvent(Component.java:4331) 	
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) 	
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) 	
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) 
    at java.awt.Container.dispatchEventImpl(Container.java:2067) 	
    at java.awt.Window.dispatchEventImpl(Window.java:2458) 	at java.awt.Component.dispatchEvent(Component.java:4331) 	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 	
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 	
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 	
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 	
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 	
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 	
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) >Exit code: 0
    Edit: questa finestra viene creata dall'interno di un altra finestra, può influire?

    Ri-Edit: ti pareva, ho sbagliato sezione, chiedo umilmente perdono, ho fatto casino dopo la creazione del nuovo account

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Dev'essere davvero tanto che non posti sul forum... è da parecchio che Java ha una sua area riservata...

    Sposto.


    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
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java, Swing] Errore con metodi getValue e getText in un actionPerformed

    Originariamente inviato da Kea Black
    il codice viene compilato senza errori ma quando eseguo il programma e premo il pulsante ok mi viene fuori una bella eccezione
    Nel actionPerformed che hai postato l'unica cosa che potrebbe davvero, realmente, causare NullPointerException è se c1 è null.

    Potrebbe essere dovuto al fatto che magari c1 è sì una variabile di istanza ma nel costruttore (o dove inizializzi i componenti) ti sei sbagliato e hai dichiarato una variabile locale c1. Quindi quel c1 di istanza resta a null. È facile fare questo errore ... è semplicemente uno "shadowing" e non un "errore" di compilazione.

    Originariamente inviato da Kea Black
    sapete dirmi inoltre come faccio a distinguere quale tra più slider genera un evento changeevent?
    Con la stessa logica del confronto dei reference usando getSource.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4

    Re: Re: [Java, Swing] Errore con metodi getValue e getText in un actionPerformed

    Originariamente inviato da LeleFT
    Dev'essere davvero tanto che non posti sul forum... è da parecchio che Java ha una sua area riservata...

    Sposto.


    Ciao.
    che c'era la sezione lo sapevo , quando ho aperto la discussione pensavo di essere proprio nella sezione Java , grazie per aver spostato

    Originariamente inviato da andbin
    Nel actionPerformed che hai postato l'unica cosa che potrebbe davvero, realmente, causare NullPointerException è se c1 è null.

    Potrebbe essere dovuto al fatto che magari c1 è sì una variabile di istanza ma nel costruttore (o dove inizializzi i componenti) ti sei sbagliato e hai dichiarato una variabile locale c1. Quindi quel c1 di istanza resta a null. È facile fare questo errore ... è semplicemente uno "shadowing" e non un "errore" di compilazione.

    Con la stessa logica del confronto dei reference usando getSource.
    ho aggirato il problema cambiando approccio (ho evitato di creare una sottoclasse e mi sono servito di un normale jframe, usando il listener del jframe principale), il getSource nel change listener lo provavo ieri ma non funzionava, oggi invece si, il che mi fa spospettare che tu abbia proprio ragione sul problema di ieri (se il c1 globale era a null l'if non poteva funzionare)

    grazie per l'aiuto

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