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.