Per la maggior parte delle GUI che ho utilizzato, quando un controllo che contiene del testo ottiene il focus, vengono selezionati tutti i contenuti del controllo. Ciò significa che se inizi a digitare, sostituisci completamente i precedenti contenuti.Esiste un modo semplice per modificare il comportamento di un controllo Java/Swing quando viene attivato?
Esempio: il controllo di rotazione è inizializzato con il valore zero. Si scheda e digita "1" Il valore nel controllo è ora 1.
Con Swing, ciò non accade. Il testo nel controllo non è selezionato e la caratura appare a un'estremità o un'altra del testo esistente. Continuando nell'esempio sopra:
Con uno Swing JSpinner, quando si passa al controllo rotazioni, il carato si trova a sinistra. Si digita "1" e il valore nel controllo è ora 10.
Questo mi spinge (e i miei utenti) su un muro, e mi piacerebbe cambiarlo. Ancora più importante, mi piacerebbe cambiarlo globalmente in modo che il nuovo comportamento si applichi a JTextField, JPasswordField, JFormattedTextField, JTextArea, JComboBox, JSpinner e così via. L'unico modo in cui ho trovato di fare questo per aggiungere un FocusAdapter ad ogni controllo e sovrascrivere il metodo focusGained() per Do The Right Thing [tm].
Ci deve essere un modo più semplice e meno fragile. Per favore?
MODIFICA: Un'ulteriore informazione aggiuntiva per questo caso particolare. Il modulo con cui sto lavorando è stato generato utilizzando il form designer di Idea. Ciò significa che normalmente non scrivo il codice per creare i componenti. È possibile dire a Idea che vuoi crearli da solo, ma è una seccatura che vorrei evitare.
Motto: Tutti i bravi programmatori sono fondamentalmente pigri.
Ho trovato una soluzione che soddisfa le mie esigenze. È pubblicato come risposta. –