Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Problema JTextField

  1. #1

    Problema JTextField

    Ciao a tutti...!
    Il mio problema è sicuramente molto banale ma non riesco a risolverlo:
    Vorrei creare una JTextField con del testo.
    Quello che vorrei fare io è settare le dimensioni del JTextField in questo modo:

    JTextField tf = new JTextField("del testo", 60) ;

    cioè voglio che al massimo si possano scrivere 60 caratteri nella JTextField, e poi vorrei che al posto della stringa "del testo" ci sia una stringa più lunga di 60 caratteri...
    Ovviamente i caratteri in più vorrei che non si vedessero nella JTextField ma vorrei anche che ci fossero nel senso che vorrei trovarli andando a destra con il tasto cursore.

    E' possibile fare una cosa del genere??
    Ringrazio anticipatamente...

  2. #2
    Utente di HTML.it L'avatar di Sun1
    Registrato dal
    Feb 2006
    Messaggi
    81
    nn so se ho capito bene, ma prova ad utilizzare questa proprietà

    text.setPreferredSize(new Dimension(width,height))

    al posto di width ci metti la lunghezza desiderata del tuo campo

    Ciao

  3. #3
    sisi!!!!! grazie!!!!!!!!!!!!!! era proprio quello che volevo!!! grazie!!!
    In questo modo diciamo che vedo soltanto la parte finale del testo...
    Come faccio a far vedere la parte iniziale del testo??
    Grazie ancora...!!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problema JTextField

    Originariamente inviato da fashionprivate
    JTextField tf = new JTextField("del testo", 60) ;

    cioè voglio che al massimo si possano scrivere 60 caratteri nella JTextField
    Nota che quel 60 non è il numero massimo di caratteri inseribili!!! Semplicemente è una informazione sul numero di colonne per calcolare il "preferred width" del componente. Che può essere o non essere sfruttato a seconda di quale layout manager usi. Se il text field lo metti in un layout manager che non rispetta in generale il preferred size o anche solo il width (o non usi affatto un layout manager e usi setBounds() ), quel 60 non serve a nulla.

    Se vuoi limitare il numero massimo di caratteri inseribili, devi agire sul document, cioè estendere PlainDocument e implementare la logica di limitazione dei caratteri.
    Vedi tra i miei Java Examples (in firma), sezione Text components che c'è l'esempio bello pronto MaxLengthTextFields.java.

    Originariamente inviato da fashionprivate
    e poi vorrei che al posto della stringa "del testo" ci sia una stringa più lunga di 60 caratteri...
    Ovviamente i caratteri in più vorrei che non si vedessero nella JTextField ma vorrei anche che ci fossero nel senso che vorrei trovarli andando a destra con il tasto cursore.
    Mi pare un po' confuso/contraddittorio questo punto. Una cosa è limitare il numero di caratteri inseribili nel PlainDocument (e più quelli quindi non si può aggiungere altro) e un'altra è rendere il componente fisicamente più corto in modo che con il cursore si possa comunque andare avanti nel testo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    si, giusto, mi ero spiegato male prima... quello che volevo era semplicemente diminuire la dimensione in larghezza del JTextField e questo lo faccio con il metodo

    setPreferredSize(new Dimension(width,height))

    A questo punto però vorrei che si vedesse, nel caso ci sia dentro un testo abbastanza lungo, la parte iniziale di questo testo e non la parte finale.
    Si riesce a fare in qualche modo??
    Grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fashionprivate
    A questo punto però vorrei che si vedesse, nel caso ci sia dentro un testo abbastanza lungo, la parte iniziale di questo testo e non la parte finale.
    La porzione di testo che si vede dipende dall'offset di scroll, vedi setScrollOffset()
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    non so però a cosa serve quel metodo... ci ho appena provato e ho fatto diversi tentativi ma non riesco a far vedere all'inizio la parte iniziale del testo...
    Faccio un esempio di quello che vorrei fare:

    Ammettiamo che il testo nella JTextField sia: "Ciao come stai?? tutto bene??"
    e ammettiamo che la textfield sia lunga in modo che sia possibile vedere 8 caratteri al max.
    All'inizio nella textfield vedo: "o bene??"
    Invece vorrei vedere: "Ciao com"

    Si riesce a farlo??

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fashionprivate
    non so però a cosa serve quel metodo... ci ho appena provato e ho fatto diversi tentativi ma non riesco a far vedere all'inizio la parte iniziale del testo...
    setScrollOffset funziona ma bisogna capire quando usarlo! Se imposti del testo con setText() (o dal costruttore) e se fai appena di seguito un setScrollOffset(0) non ha effetto lo scroll ... perché solo successivamente, quando il controllo ritorna al framework, allora verrà aggiornato il componente. Ma tu hai fatto lo scroll prima che venga realmente aggiornato il testo nel componente!

    Quindi forse fai prima a settare la posizione del caret (il cursore lampeggiante nel componente) con setCaretPosition(0)
    Questo sì, funziona anche subito dopo il set del testo, perché la posizione del caret non centra con lo scroll.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    grazie mille!!!! adesso funziona tutto quanto!!!!!!
    grazie!

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.