Visualizzazione dei risultati da 1 a 10 su 13

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    In che modo usavi il metodo isEnabled (penso che ti riferissi a quello)?

    Perché riferito al radio button non ha molto senso, ma potresti fare l'ovveride del metodo isEnabled () per i textfield, dove ritorni true o false a seconda che il corrispondente radio button sia selezionato (userai quindi isSelected () su ogni radio button).
    Questo in teoria dovrebbe funzionare ma penso dovrai richiamare il repaint sui textfield per rendere visibile la modifica ad ogni volta che cambi la selezione del radio button.

    Oppure potresti "ascoltare" ogni cambiamento di selezione, e modificare tu esplicitamente ogni textfield con il setEnabled (boolean value).

    Se vuoi provo a buttare giù un esempietto

  2. #2
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    Grazie Ansharja,

    ho risolto implementando ActionListener, in questo modo

    codice:
    	@Override	public void actionPerformed(ActionEvent e) {
    		//Si indiviuda il radioButton selezionato
    		Object src = e.getSource();
    		if(src==radioButtonDay){
    			labelDay1.setEnabled(true);
    			fieldTextDay.setEnabled(true);
    			
    			labelHour1.setEnabled(false);
    			fieldTextHour.setEnabled(false);
    			
    			labelMinutes1.setEnabled(false);
    			fieldTextMinutes.setEnabled(false);
    		}
    
    
    		
    		if(src == radioButtonHours){
    			labelHour1.setEnabled(true);
    			fieldTextHour.setEnabled(true);
    			
    			labelDay1.setEnabled(false);
    			fieldTextDay.setEnabled(false);
    			
    			labelMinutes1.setEnabled(false);
    			fieldTextMinutes.setEnabled(false);
    		}
    
    
    		
    		if(src == radioButtonMinutes){
    			labelMinutes1.setEnabled(true);
    			fieldTextMinutes.setEnabled(true);
    			
    			labelDay1.setEnabled(false);
    			fieldTextDay.setEnabled(false);
    			
    			labelHour1.setEnabled(false);
    			fieldTextHour.setEnabled(false);
    		}
    		
    
    
    		
    	}
    Grazie a tutti

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da cerza Visualizza il messaggio
    codice:
    	@Override	public void actionPerformed(ActionEvent e) {
    		//Si indiviuda il radioButton selezionato
    		Object src = e.getSource();
    		if(src==radioButtonDay){
    			labelDay1.setEnabled(true);
    			fieldTextDay.setEnabled(true);
    			
    			labelHour1.setEnabled(false);
    			fieldTextHour.setEnabled(false);
    			
    			labelMinutes1.setEnabled(false);
    			fieldTextMinutes.setEnabled(false);
    		}
    [ ..... ]
    Un codice del genere non solo è lungo e prolisso ma anche error-prone. Inoltre se aggiungessi un altro radiobutton in mutua-esclusione oltre ai 3 già presenti, non solo dovresti aggiungere un intero blocco if ma anche aggiungere codice negli altri 3 if!

    Una logica del genere, come minimo, la si risolve così:

    codice:
    public void actionPerformed(ActionEvent e) {
        Object src = e.getSource();
    
        labelDay1.setEnabled(src == radioButtonDay);
        fieldTextDay.setEnabled(src == radioButtonDay);
    
        labelHour1.setEnabled(src == radioButtonHours);
        fieldTextHour.setEnabled(src == radioButtonHours);
    
        // ecc...
    }
    (cioè, niente if!)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    Grazie del suggerimento, in effetti senza if è molto meglio

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.