View Full Version : [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? :help: :help: :help:
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 :D.
sono stato io poco chiaro :p intendevo che l'allineamento del testo è a sinistra e quindi quando scrivo 1234567890 vedrò comparire 1 2 3 da sinistra a destra poi quando digito 4 il carattere 1 scompare perchè si sposterà a sinistra e il campo di testo (che riesce a visualizzare solo tre caratteri)visualizzerà 234
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 :help:
grazie!!! ;)
sono stato io poco chiaro :p intendevo che l'allineamento del testo è a sinistra e quindi quando scrivo 1234567890 vedrò comparire 1 2 3 da sinistra a destra poi quando digito 4 il carattere 1 scompare perchè si sposterà a sinistra e il campo di testo (che riesce a visualizzare solo tre caratteri)visualizzerà 234
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 :help:
grazie!!! ;)
:help: :help: :help:
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.
:help: ma in che modo posso applicarlo ad esempio a questo
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!!! ;)
:help:
Prima di farti un esempio vorrei capire... perchè :D
L'utente può inserire solo numeri di tre cifre?
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() :D
grazie mille!!! ciao ;)
ho risolto usando setCaretPosition() :D
Misteri dell'informatica :confused:
Misteri dell'informatica :confused:
perchè? non va bene?
il mio scopo era quello di visualizzare il contenuto della casella di testo dal primo carattere inserito, e setCaretPosition(0) fa proprio questo!!!
ciao ;)
Misteri dell'informatica :confused:
PGI-Bis mi hai rimasto con il dubbio!!! ma quello che ho fatto ha qlc che non va? te lo chiedo perchè mi hai sempre dato ottimi consigli e quindi vorrei, se possibile, un tuo parere.
grazie!!! ;)
Citerò l'immortale detto del programmatore alle strette: basta che vada. :D
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 :). Insomma, tutto ok.
inizialmente è una stringa che poi soltanto in un secondo momento converto in double
grazie ancora!!! ciao ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.