[Risolto] Non mi funziona l'allineamento in un campo JTextField

di il
2 risposte

[Risolto] Non mi funziona l'allineamento in un campo JTextField

Buongiorno,

problema apparentemente semplice ma che non riesco a risolvere.

Ho un campo di tipo JTextField (chiamato TxtDescrizione) in cui ho impostato


TxtDescrizione.setHorizontalAlignment(javax.swing.JTextField.LEFT);

ma quando inserisco un testo che eccede la larghezza del JTextField TxtDescrizione me lo allinea a destra, ovvero mi fa vedere la parte finale di destra del testo invece che la parte iniziale di sinistra.

Qualcuno sa dirmi come mai?

2 Risposte

  • Re: [Risolto] Non mi funziona l'allineamento in un campo JTextField

    21/02/2023 - ZioCrick ha scritto:


    TxtDescrizione.setHorizontalAlignment(javax.swing.JTextField.LEFT);

    ma quando inserisco un testo che eccede la larghezza del JTextField TxtDescrizione me lo allinea a destra, ovvero mi fa vedere la parte finale di destra del testo invece che la parte iniziale di sinistra.

    Non c'entra il horizontal alignment. JTextField gestisce il concetto di “scrolling” orizzontale, similarmente a come fa JTextArea che può essere scrollato in senso x/y. Quindi qui si tratta di rimettere lo scrolling all'inizio.

    tuoTextfield.setText("Testo molto molto molto molto molto molto lungo !!!");
    SwingUtilities.invokeLater(() -> tuoTextfield.setScrollOffset(0));

    Piccolo inghippo. Quando fai il setText, Swing NON ha ancora calcolato l'estensione del testo e quindi dello scrolling. Se il text field era inizialmente vuoto (scroll offset è 0), appena dopo il setText del testo lungo, lo scroll offset è ancora 0. Quando poi il controllo torna al framework, allora calcola l'estensione del testo e piazza lo scrolling al massimo possibile (è per questo che vedi il fondo del testo!).

    Bisogna quindi “parcheggiare” un evento in modo che venga eseguito più avanti per rimettere lo scroll offset a 0.

  • Re: [Risolto] Non mi funziona l'allineamento in un campo JTextField

    Amico caro, sei un mito!

    Funziona! 

    Ma queste cose le trovi sul web o ti sei studiato qualche libro?
    E nel caso del libro, se in italiano, me lo puoi indicare?

Devi accedere o registrarti per scrivere nel forum
2 risposte