Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260

    Attivare bottone al riempimento di una JTextField

    Buongiorno,
    sto facendo un po' di pratica con le GUI in Java e sto cercando di fare una rubrica personale.
    Mi sono bloccato al seguente problema:
    praticamente ho un bottone reset che mi resetta semplicemente i campi.
    Inizialmente è disabilitato e vorrei che si attivasse qualora si inserisse almeno un carattere in una delle JTextField.
    La stessa situazione mi si presenterà successivamente con il bottone Esegui, che dovrà attivarsi soltanto quando almeno 3 JTextField saranno attive.
    Come posso fare ciò?
    Avete un link dove posso studiare tale argomento?
    O semplicemente una discussione passata che non ho trovato con il tasto cerca?

    Grazie mille!

  2. #2
    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 un bottone reset che mi resetta semplicemente i campi.
    Inizialmente è disabilitato e vorrei che si attivasse qualora si inserisse almeno un carattere in una delle JTextField.
    La stessa situazione mi si presenterà successivamente con il bottone Esegui, che dovrà attivarsi soltanto quando almeno 3 JTextField saranno attive.
    Come posso fare ciò?
    Le logiche di "interazione" di questo tipo tra due o più componenti possono essere anche complesse (anche di più del tuo scenario) e pertanto risultano abbastanza specifiche. E purtroppo nel framework standard di Java SE non c'è nulla del genere di già "fatto".
    Quindi le solite soluzioni sono: o lo si fa a "manina", con un po' di codice aggiuntivo, oppure si cerca una libreria per componenti Swing che offre logiche del genere (non ne conosco) .

    La soluzione fai-da-te comunque non è difficile: tutti i componenti di testo hanno un Document (get/setDocument) e su questo è possibile registrare un DocumentListener, che riceve notifica di tutti, ma proprio tutti, i possibili cambiamenti (digitazione manuale, copia-incolla, modifica programmatica).
    Basta quindi fare in modo che la notifica della modifica per tutti gli N textfield arrivi ad una "entità" (oggetto) che però deve essere a conoscenza a priori di tutti i textfield (deve avere i reference) e quindi ad ogni modifica fare una logica semplice del tipo: se almeno uno non è vuoto, abilito il componente X (altro reference da tenere) oppure lo disabilito.

    Se si implementa bene questa logica si può anche renderla ben incapsulata, riutilizzabile e più o meno flessibile.
    E bravo che mi hai anche dato lo spunto per il mio prossimo Java Example.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260
    Ti ringrazio molto per queste preziose informazioni.
    Purtroppo sino ad ora non ero minimamente a conoscenza dell'interfaccia Document, dato che il libro su cui sto studiando Java non riporta informazioni su questo argomento.
    Mi metterò alla ricerca di queste implementazioni e adotterò la soluzione "fai-da-te" per effettuare le operazioni su descritte.
    Quando scrivo una cosa nuova preferisco farlo personalmente e non utilizzare qualcosa di già fatto senza sapere come è fatto(scusa il gioco di parole) e capirne il funzionamento(odio le scorciatoie che non mi sono d'aiuto veramente o delle quali non so perfettamente come funzionano!).
    Sicuramente avrò problemi ad arrivare fino in fondo, quindi troverai nei prossimi giorni qualche post in qui chiedo lumi sull'argomento.
    Ti ringrazio ancora
    Buona giornata

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.