|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
[java] JTextField
se ho un JTextField
JTextField hello = new JTextField(2); che riesce a visualizzare soltanto 3 caratteri, esempio: 123 se io digito 10 caratteri: 1234567890 questo visualizzerà 890 il problema è che quando premo invio vorrei che visualizzasse i primi 3 caratteri a sinistra cioè 123 e quando digito deve scrivere però da sinistra a destra!!! è possibile farlo? ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Per un JTextComponent è possibile tutto e il contrario di tutto.
Un campo di testo possiede un Document (javax.swing.text.PlainDocument per i JTextField). Il JTextField passa al suo Document il risultato di interazioni che abbiano a che fare con la manipolazione del testo. Per JTextField queste manipolazioni sono l'inserimento di una porzione di testo e la rimozione di porzioni di testo già inserite. Il bello è che il campo di testo riproduce a video non ciò che l'utente digita ma quello che il suo Document produce come risultato della digitazione. Se l'utente scrive "normalmente" e il Document aggiunge i caratteri all'inizio anzichè alla fine, il risultato sarà un testo invertito. Se il Document accumula tutti i caratteri inseriti ma ne restituisce solo alcuni, il campo di testo proietterà solo quei caratteri che il suo Document decida di mostrare. Per queste ed altre caratteristiche dico che si può fare. Non ho capito tanto bene la faccenda dello scrivere da sinistra a destra per poi visualizzare la cifra "123". Io digito -> nel campo di testo appare: 1 -> 1 2 -> 21 3 -> 321 4 -> 432 5 -> 543 6 -> 654 7 -> 765 8 -> 876 9 -> 987 0 -> 098 invio -> 123 E' così o non ho capito una mazza? Propendo per la seconda ![]()
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
sono stato io poco chiaro
![]() io vorrei che quando premo invio oppure mi sposto su un altro campo di testo quello in quello ho digitato 1234 visualizzi 123 e non 234 puoi spiegarmi per favore come fare ![]() grazie!!! ![]() |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
Quote:
![]() ![]() ![]() |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
KeyListener e FocusListener. Se vuoi impedire la perdita del focus in caso di invalidità dell'input, InputVerifier.
Tutto ruota intorno al significato di quei numeri. L'interazione è una funzione del significato.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
![]() import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Test extends JFrame { JButton button1=new JButton("prova"); JTextField textName=new JTextField(2); //JTextField textName2=new JTextField(5); Container c; Test() { super("Test"); setSize(200,100); c=getContentPane(); c.setLayout(new FlowLayout()); c.add(button1); c.add(textName); //c.add(textName2); setVisible(true); } public static void main(String[] args) { Test app=new Test(); } } cioè se digito 1234567890 in quel campo quando premo invio/oppure un tasto visualizzerà (ciò che riesce a visualizzare in quello spazio) partendo dal primo carattere inserito, in questo caso 1 grazie!!! ![]() ![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Prima di farti un esempio vorrei capire... perchè
![]() L'utente può inserire solo numeri di tre cifre?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
3 era solo un esempio, in realtà il contenuto viene letto da un file ed avendola settata "setEnabled(false)" per non far modificare il contenuto, potrebbe non visualizzarlo dall'inizio!!! es. 12345.55566678 potrebbe apparire all'utente come 345.55566678 confondendolo!!! (in questo caso la dimensione è molto più grande di tre ma potrebbe non bastare a visualizzare tutto 12345.55566678 )
ho risolto usando setCaretPosition() ![]() grazie mille!!! ciao ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Citerò l'immortale detto del programmatore alle strette: basta che vada.
![]() Se con setCaretPosition() riesci a fare quello che devi allora setCaretPosition() va benissimo. Sono confuso perchè veramente non riesco ad afferrare che genere di dato deva trattare quel campo ma ciò che conta è che lo sappia tu, non io ![]()
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
inizialmente è una stringa che poi soltanto in un secondo momento converto in double
grazie ancora!!! ciao ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:05.