 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
godmetal@tiscali.it Guest
|
Posted: Sat Jun 02, 2012 10:43 pm Post subject: consiglio "da esperti" per gerarchia classi |
|
|
Come leggete da titolo vorrei un consiglio da tutti coloro che hanno parecchia dimestichezza con java.
Sto realizzando una mia libreria di oggetti personalizzati, sto quidi creando una gerarchia a seconda del tipo di oggetto , in questo momento mi sto dedicando alle textfield.
ho una classe "madre" astratta
abstract class MyFormattedTextfield extends JFormattedTextField implements FocusListener{
......
}
da cuiderivano altre classi , una ad esempio deve accettare solo i numeri e li deve formattare in decimali
public class MyTextFieldDecimal extends MyFormattedTextField {
public MyTextFieldDecimal() {
setHorizontalAlignment(javax.swing.JTextField.RIGHT);
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
DecimalFormat df = new DecimalFormat("0.00",dfs);
NumberFormatter dformatter = new NumberFormatter(df);
DefaultFormatterFactory formatter = new DefaultFormatterFactory(dformatter);
setFormatterFactory(formatter);
setValue(new Float(0));
}
Ho letto che per far si che la textfield acccetti solo numeri bisogna estendere
PlainDocument sovrascrivere insertString e assegnare tale oggetto Document alla JTextField:
public class Solo Numeri extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if(str!=null && str.matches("[\\d]*"))
super.insertString(offs, str, a);
}
}
e poi nel programma principale
MyDecimalTextField tf = new MyDecimalTextField();
tf.setDocument(new NumberDocument());
Devo dire che questo approccio non mi piace , nel senso che vorrei che questo filtro fosse già integrato nella classe MyDecimalTextField, il fatto è che tale classe extends già un'altra e non posso extendere anche PlainDocument.
Che fare allora ? implementare AbstractDocument o Document ?
Voi che fareste ? la mia nasce dal fatto che vorrei che in una classe ci fossero tutti i controlli per la classe stessa , però forse pur di non dover definire tutti i metodi di AbstractDocument o Document converrebbe cambiare approccio?
Attendo vostri consigli
grazie |
|
| Back to top |
|
 |
godmetal@tiscali.it Guest
|
Posted: Sat Jun 02, 2012 11:44 pm Post subject: Re: consiglio "da esperti" per gerarchia classi |
|
|
Il giorno domenica 3 giugno 2012 00:43:19 UTC+2, godm...@tiscali.it ha scritto:
| Quote: | Come leggete da titolo vorrei un consiglio da tutti coloro che hanno parecchia dimestichezza con java.
Sto realizzando una mia libreria di oggetti personalizzati, sto quidi creando una gerarchia a seconda del tipo di oggetto , in questo momento mi sto dedicando alle textfield.
ho una classe "madre" astratta
abstract class MyFormattedTextfield extends JFormattedTextField implements FocusListener{
.....
}
da cuiderivano altre classi , una ad esempio deve accettare solo i numeri e li deve formattare in decimali
public class MyTextFieldDecimal extends MyFormattedTextField {
public MyTextFieldDecimal() {
setHorizontalAlignment(javax.swing.JTextField.RIGHT);
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
DecimalFormat df = new DecimalFormat("0.00",dfs);
NumberFormatter dformatter = new NumberFormatter(df);
DefaultFormatterFactory formatter = new DefaultFormatterFactory(dformatter);
setFormatterFactory(formatter);
setValue(new Float(0));
}
Ho letto che per far si che la textfield acccetti solo numeri bisogna estendere
PlainDocument sovrascrivere insertString e assegnare tale oggetto Document alla JTextField:
public class Solo Numeri extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if(str!=null && str.matches("[\\d]*"))
super.insertString(offs, str, a);
}
}
e poi nel programma principale
MyDecimalTextField tf = new MyDecimalTextField();
tf.setDocument(new NumberDocument());
Devo dire che questo approccio non mi piace , nel senso che vorrei che questo filtro fosse già integrato nella classe MyDecimalTextField, il fatto è che tale classe extends già un'altra e non posso extendere anche PlainDocument.
Che fare allora ? implementare AbstractDocument o Document ?
Voi che fareste ? la mia nasce dal fatto che vorrei che in una classe ci fossero tutti i controlli per la classe stessa , però forse pur di non dover definire tutti i metodi di AbstractDocument o Document converrebbe cambiare approccio?
Attendo vostri consigli
grazie
|
Tra l'altro ho provato ad aggiungere
MyDecimalTextField tf = new MyDecimalTextField();
setDocument(new NumberDocument());
all0interno del costruttore della classe MyDecimalFormat e vedo che tutto il contenuto iniziale delle jtextfield viene cancellato....
fatemi luce ... |
|
| Back to top |
|
 |
godmetal@tiscali.it Guest
|
Posted: Mon Jun 04, 2012 8:40 pm Post subject: Re: consiglio "da esperti" per gerarchia classi |
|
|
Il giorno domenica 3 giugno 2012 01:44:20 UTC+2, godm...@tiscali.it ha scritto:
| Quote: | Il giorno domenica 3 giugno 2012 00:43:19 UTC+2, godm...@tiscali.it ha scritto:
Come leggete da titolo vorrei un consiglio da tutti coloro che hanno parecchia dimestichezza con java.
Sto realizzando una mia libreria di oggetti personalizzati, sto quidi creando una gerarchia a seconda del tipo di oggetto , in questo momento mi sto dedicando alle textfield.
ho una classe "madre" astratta
abstract class MyFormattedTextfield extends JFormattedTextField implements FocusListener{
.....
}
da cuiderivano altre classi , una ad esempio deve accettare solo i numeri e li deve formattare in decimali
public class MyTextFieldDecimal extends MyFormattedTextField {
public MyTextFieldDecimal() {
setHorizontalAlignment(javax.swing.JTextField.RIGHT);
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
DecimalFormat df = new DecimalFormat("0.00",dfs);
NumberFormatter dformatter = new NumberFormatter(df);
DefaultFormatterFactory formatter = new DefaultFormatterFactory(dformatter);
setFormatterFactory(formatter);
setValue(new Float(0));
}
Ho letto che per far si che la textfield acccetti solo numeri bisogna estendere
PlainDocument sovrascrivere insertString e assegnare tale oggetto Document alla JTextField:
public class Solo Numeri extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if(str!=null && str.matches("[\\d]*"))
super.insertString(offs, str, a);
}
}
e poi nel programma principale
MyDecimalTextField tf = new MyDecimalTextField();
tf.setDocument(new NumberDocument());
Devo dire che questo approccio non mi piace , nel senso che vorrei che questo filtro fosse già integrato nella classe MyDecimalTextField, il fatto è che tale classe extends già un'altra e non posso extendere anche PlainDocument.
Che fare allora ? implementare AbstractDocument o Document ?
Voi che fareste ? la mia nasce dal fatto che vorrei che in una classe ci fossero tutti i controlli per la classe stessa , però forse pur di non dover definire tutti i metodi di AbstractDocument o Document converrebbe cambiare approccio?
Attendo vostri consigli
grazie
Tra l'altro ho provato ad aggiungere
MyDecimalTextField tf = new MyDecimalTextField();
setDocument(new NumberDocument());
all0interno del costruttore della classe MyDecimalFormat e vedo che tutto il contenuto iniziale delle jtextfield viene cancellato....
fatemi luce ...
|
Fatemi capire, senza offesa per nessuno o questo forum ormai è morto , o non c'è nessuno esperto, o quello che vi chiedo non è mai risolvibile.....almeno una risposta per cercare di capire insieme il problema... |
|
| Back to top |
|
 |
Dr.Ugo Gagliardelli Guest
|
Posted: Tue Jun 05, 2012 6:27 am Post subject: Re: consiglio "da esperti" per gerarchia classi |
|
|
il 04.06.2012 22:40, Scrive godmetal (AT) tiscali (DOT) it 92404204:
| Quote: | Il giorno domenica 3 giugno 2012 01:44:20 UTC+2, godm...@tiscali.it ha scritto:
[...]
Fatemi capire, senza offesa per nessuno o questo forum ormai è morto,
o non c'è nessuno esperto, o quello che vi chiedo non è mai risolvibile....
almeno una risposta per cercare di capire insieme il problema...
Normalmente utilizzo le classi per quello che risulta dalla |
documentazione, per cui non mi ritengo un esperto per dare pareri sul
caso che proponi.
Nella fattispecie, il JFormattedTextField si crea il suo bel formatter
al primo setValue in base al tipo del valore, per cui io non mi sarei
mai sognato di intraprendere una strada come quella che hai preso tu.
Che non significa che sia sbagliata, ne' che sia la mia quella giusta,
semplicemente mi sono limitato all'uso consigliato dal javadoc. |
|
| Back to top |
|
 |
godmetal@tiscali.it Guest
|
Posted: Tue Jun 05, 2012 9:33 pm Post subject: Re: consiglio "da esperti" per gerarchia classi |
|
|
Il giorno martedì 5 giugno 2012 10:27:58 UTC+2, Dr.Ugo Gagliardelli ha scritto:
| Quote: | il 04.06.2012 22:40, Scrive godmetal (AT) tiscali (DOT) it 92404204:
Il giorno domenica 3 giugno 2012 01:44:20 UTC+2, godm...@tiscali.it ha scritto:
[...]
Fatemi capire, senza offesa per nessuno o questo forum ormai è morto,
o non c'è nessuno esperto, o quello che vi chiedo non è mai risolvibile....
almeno una risposta per cercare di capire insieme il problema...
Normalmente utilizzo le classi per quello che risulta dalla
documentazione, per cui non mi ritengo un esperto per dare pareri sul
caso che proponi.
Nella fattispecie, il JFormattedTextField si crea il suo bel formatter
al primo setValue in base al tipo del valore, per cui io non mi sarei
mai sognato di intraprendere una strada come quella che hai preso tu.
Che non significa che sia sbagliata, ne' che sia la mia quella giusta,
semplicemente mi sono limitato all'uso consigliato dal javadoc.
|
Ti ringrazio estremamente della risposta, perchè permette di intavolare una discussione e cercare di crescere tecnicamente (almeno per quanto mi riguarda).
Premetto che non sono un conoscitore di tutti i mattoni Java e quindi molti buchi ci sono nelle mie conoscenze...Sono consapevole che il JFormattedTextField si auto formatta una volta che dò il setValue (sai ho fatto delle prove..) quello che mi interessava e che non riesco ad ottenere è questo effetto (e su questo chiedo indicazioni) : vorrei che i caratteri alfabetici venissero riconosciuti e non scritti neanche nella JFormattedTextField, di contro quelli numerici vengono accettati e formattati come stabilito.
Attualmente accade questo i caratteri non validi vengono scritti ma all'abbandonare del focus vengono formattati solo i valori validi inseriti. Se invece applico il DocumentPlain ad una semplice JtextField vengono scritti solo i numeri, mentre i caratteri no (questo va bene) però chiaramente i numeri non verranno formattati come vorrei.
Da qui mi nasce la crisi...vorrei entrambi gli effetti
Grazie della risposta |
|
| Back to top |
|
 |
Dr.Ugo Gagliardelli Guest
|
Posted: Wed Jun 06, 2012 10:44 am Post subject: Re: consiglio "da esperti" per gerarchia classi |
|
|
il 05.06.2012 23:33, Scrive godmetal (AT) tiscali (DOT) it 153895788:
| Quote: | Il giorno martedì 5 giugno 2012 10:27:58 UTC+2, Dr.Ugo Gagliardelli ha scritto:
il 04.06.2012 22:40, Scrive godmetal (AT) tiscali (DOT) it 92404204:
Il giorno domenica 3 giugno 2012 01:44:20 UTC+2, godm...@tiscali.it ha scritto:
[...]
Fatemi capire, senza offesa per nessuno o questo forum ormai è morto,
o non c'è nessuno esperto, o quello che vi chiedo non è mai risolvibile....
almeno una risposta per cercare di capire insieme il problema...
Normalmente utilizzo le classi per quello che risulta dalla
documentazione, per cui non mi ritengo un esperto per dare pareri sul
caso che proponi.
Nella fattispecie, il JFormattedTextField si crea il suo bel formatter
al primo setValue in base al tipo del valore, per cui io non mi sarei
mai sognato di intraprendere una strada come quella che hai preso tu.
Che non significa che sia sbagliata, ne' che sia la mia quella giusta,
semplicemente mi sono limitato all'uso consigliato dal javadoc.
Ti ringrazio estremamente della risposta, perchè permette di intavolare una discussione e cercare di crescere tecnicamente (almeno per quanto mi riguarda).
Premetto che non sono un conoscitore di tutti i mattoni Java e quindi molti buchi ci sono nelle mie conoscenze...
Sono consapevole che il JFormattedTextField si auto formatta una volta che dò il setValue (sai ho fatto delle prove..)
quello che mi interessava e che non riesco ad ottenere è questo effetto
(e su questo chiedo indicazioni) : vorrei che i caratteri alfabetici venissero
riconosciuti e non scritti neanche nella JFormattedTextField,
di contro quelli numerici vengono accettati e formattati come stabilito.
Attualmente accade questo i caratteri non validi vengono scritti ma
all'abbandonare del focus vengono formattati solo i valori validi inseriti.
Se invece applico il DocumentPlain ad una semplice JtextField vengono scritti
solo i numeri, mentre i caratteri no (questo va bene) però chiaramente i numeri
non verranno formattati come vorrei.
Da qui mi nasce la crisi...vorrei entrambi gli effetti
Grazie della risposta
Premetto che non ho capito bene. Il comportamento del |
JFormattedTextField puo' essere regolato in diversi modi, ad esempio col
metodo setFocusLostBehavior. Per modificare l'edit dei numeri,
basterebbe impostare le proprietà corrette nel formatter che ottieni con
il metodo getFormatter() o tramite il Format che ottieni tramite
getFormatter().getFormat(), ammesso che ci sia. |
|
| Back to top |
|
 |
godmetal@tiscali.it Guest
|
Posted: Wed Jun 06, 2012 9:45 pm Post subject: Re: consiglio "da esperti" per gerarchia classi |
|
|
| Quote: | Premetto che non ho capito bene. Il comportamento del
JFormattedTextField puo' essere regolato in diversi modi, ad esempio col
metodo setFocusLostBehavior. Per modificare l'edit dei numeri,
basterebbe impostare le proprietᅵ corrette nel formatter che ottieni con
il metodo getFormatter() o tramite il Format che ottieni tramite
getFormatter().getFormat(), ammesso che ci sia.
|
Grazie ancora per la risposta, scriverò le due classi che ho creato in modo che tu possa vedere l'effetto che ottengo:
la prima, per avere un filtraggio dei numeri
public class MyNumberControl extends PlainDocument {
public MyNumberControl(){
}
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
Pattern pattern = Pattern.compile("[a-zA-Z]");
if (!(str!=null && pattern.matcher(str).matches())){
super.insertString(offs, str, a);
System.out.println("numero");
}
else
System.out.println("carattere");
}
}
la seconda , la classe che crea JFormattedTextField formattati decimali
public class MyTextFieldDecimal extends JFormattedTextField {
public MyTextFieldDecimal() {
setHorizontalAlignment(javax.swing.JTextField.RIGHT);
formatting();
}
private void formatting(){
MyNumberControl ncontrol = new MyNumberControl();
this.setDocument(ncontrol);
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
DecimalFormat df = new DecimalFormat("0.00",dfs);
NumberFormatter dformatter = new NumberFormatter(df);
DefaultFormatterFactory formatter = new DefaultFormatterFactory(dformatter);
setFormatterFactory(formatter);
setValue(new Float(0));
}
Come vedi nel metodo formatting della seconda classe assegno con setDocument() il filtraggio dei numeri. Il comportamento non è quello sperato , perchè io riesco a scrivere dei caratteri all'interno delle textfield lasciando il focus questi caratteri spariscono perchè non riesco ad essere formattati e rimango solo i numeri formattati correttamente. Se su una semplice JTextField invece setti il filtro con la prima classe, si ottiene l'effetto che voglio , cioè qualora digitassi dei caratteri, questi non vengono neanche scritti nella textbox, ma vengono scritti solo i numeri (che poi non saranno formattati poichè non è impostato nessun formatter)
Che ne pensi
Grazie mille |
|
| Back to top |
|
 |
Dr.Ugo Gagliardelli Guest
|
Posted: Thu Jun 07, 2012 9:16 am Post subject: Re: consiglio "da esperti" per gerarchia classi |
|
|
il 06.06.2012 23:45, Scrive godmetal (AT) tiscali (DOT) it 147794540:
| Quote: | Premetto che non ho capito bene. Il comportamento del
JFormattedTextField puo' essere regolato in diversi modi, ad esempio col
metodo setFocusLostBehavior. Per modificare l'edit dei numeri,
basterebbe impostare le proprietᅵ corrette nel formatter che ottieni con
il metodo getFormatter() o tramite il Format che ottieni tramite
getFormatter().getFormat(), ammesso che ci sia.
Grazie ancora per la risposta, scriverò le due classi che ho creato in modo che tu possa vedere l'effetto che ottengo:
la prima, per avere un filtraggio dei numeri
public class MyNumberControl extends PlainDocument {
public MyNumberControl(){
}
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
Pattern pattern = Pattern.compile("[a-zA-Z]");
if (!(str!=null&& pattern.matcher(str).matches())){
super.insertString(offs, str, a);
System.out.println("numero");
}
else
System.out.println("carattere");
}
}
la seconda , la classe che crea JFormattedTextField formattati decimali
public class MyTextFieldDecimal extends JFormattedTextField {
public MyTextFieldDecimal() {
setHorizontalAlignment(javax.swing.JTextField.RIGHT);
formatting();
}
private void formatting(){
MyNumberControl ncontrol = new MyNumberControl();
this.setDocument(ncontrol);
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
DecimalFormat df = new DecimalFormat("0.00",dfs);
NumberFormatter dformatter = new NumberFormatter(df);
DefaultFormatterFactory formatter = new DefaultFormatterFactory(dformatter);
setFormatterFactory(formatter);
setValue(new Float(0));
}
Come vedi nel metodo formatting della seconda classe assegno con setDocument() il filtraggio dei numeri.
Il comportamento non è quello sperato , perchè io riesco a scrivere dei caratteri all'interno delle
textfield lasciando il focus questi caratteri spariscono perchè non riesco ad essere formattati
e rimango solo i numeri formattati correttamente.
Se su una semplice JTextField invece setti il filtro con la prima classe, si ottiene l'effetto che voglio ,
cioè qualora digitassi dei caratteri, questi non vengono neanche scritti nella textbox, ma vengono scritti
solo i numeri (che poi non saranno formattati poichè non è impostato nessun formatter)
Che ne pensi
Grazie mille
Nella documentazione del JFormattedTextField si dice espressamente: |
As the AbstractFormatter will typically install a DocumentFilter on the
Document, and a NavigationFilter on the JFormattedTextField *you should
not install your own*. If you do, you are likely to see odd behavior in
that the editing policy of the AbstractFormatter will not be enforced.
per cui direi che scegliere la strada di installare il tuo document, non
sia quella giusta. |
|
| Back to top |
|
 |
godmetal@tiscali.it Guest
|
Posted: Thu Jun 07, 2012 9:16 pm Post subject: Re: consiglio "da esperti" per gerarchia classi |
|
|
Il giorno domenica 3 giugno 2012 00:43:19 UTC+2, godm...@tiscali.it ha scritto:
| Quote: | Come leggete da titolo vorrei un consiglio da tutti coloro che hanno parecchia dimestichezza con java.
Sto realizzando una mia libreria di oggetti personalizzati, sto quidi creando una gerarchia a seconda del tipo di oggetto , in questo momento mi sto dedicando alle textfield.
ho una classe "madre" astratta
abstract class MyFormattedTextfield extends JFormattedTextField implements FocusListener{
.....
}
da cuiderivano altre classi , una ad esempio deve accettare solo i numeri e li deve formattare in decimali
public class MyTextFieldDecimal extends MyFormattedTextField {
public MyTextFieldDecimal() {
setHorizontalAlignment(javax.swing.JTextField.RIGHT);
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
DecimalFormat df = new DecimalFormat("0.00",dfs);
NumberFormatter dformatter = new NumberFormatter(df);
DefaultFormatterFactory formatter = new DefaultFormatterFactory(dformatter);
setFormatterFactory(formatter);
setValue(new Float(0));
}
Ho letto che per far si che la textfield acccetti solo numeri bisogna estendere
PlainDocument sovrascrivere insertString e assegnare tale oggetto Document alla JTextField:
public class Solo Numeri extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if(str!=null && str.matches("[\\d]*"))
super.insertString(offs, str, a);
}
}
e poi nel programma principale
MyDecimalTextField tf = new MyDecimalTextField();
tf.setDocument(new NumberDocument());
Devo dire che questo approccio non mi piace , nel senso che vorrei che questo filtro fosse già integrato nella classe MyDecimalTextField, il fatto è che tale classe extends già un'altra e non posso extendere anche PlainDocument.
Che fare allora ? implementare AbstractDocument o Document ?
Voi che fareste ? la mia nasce dal fatto che vorrei che in una classe ci fossero tutti i controlli per la classe stessa , però forse pur di non dover definire tutti i metodi di AbstractDocument o Document converrebbe cambiare approccio?
Attendo vostri consigli
grazie
|
Ti ringrazio di avermi fatto notare quel warning ma sinceramente non ne capisco completamente il senso, ti chiedo quindi di darmi delle delucidazioni in merito e soprattutto darmi un'indicazione di come potrei procedere per ottenere l'effetto voluto..
grazie |
|
| Back to top |
|
 |
Dr.Ugo Gagliardelli Guest
|
Posted: Fri Jun 08, 2012 7:24 am Post subject: Re: consiglio "da esperti" per gerarchia classi |
|
|
il 07.06.2012 23:16, Scrive godmetal (AT) tiscali (DOT) it 127341004:
| Quote: | Ti ringrazio di avermi fatto notare quel warning ma sinceramente non ne
capisco completamente il senso, ti chiedo quindi di darmi delle delucidazioni
in merito e soprattutto darmi un'indicazione di come potrei procedere per ottenere l'effetto voluto..
grazie
Delucidazioni non te ne so dare, li' dicono di non sostituire il |
document, e tanto basta per me.
Probabilmente io avrei utilizzato il formatter che si crea il
JFormattedTextField modificandone la configurazione. Ad esempio:
public class Prova extends JFormattedTextField {
public Prova() {
super();
setFocusLostBehavior(REVERT);
setValue(new Float(0));
NumberFormatter nf = (NumberFormatter)getFormatter();
DecimalFormat df = (DecimalFormat)nf.getFormat();
DecimalFormatSymbols ds = df.getDecimalFormatSymbols();
ds.setDecimalSeparator('.');
df.applyPattern("0.00");
/* oppure */
df.setGroupingUsed(false);
df.setMaximumFractionDigits(2);
df.setMaximumIntegerDigits(1);
setValue(null);
}
}
poi magari puoi modificare il comportamento con una tecnica del tipo:
try {
commitEdit();
} catch (ParseException pe) {
setValue(getValue(), false, false);
}
implementata nel listener del document. |
|
| Back to top |
|
 |
godmetal@tiscali.it Guest
|
Posted: Sat Jun 09, 2012 3:25 pm Post subject: Re: consiglio "da esperti" per gerarchia classi |
|
|
Il giorno domenica 3 giugno 2012 00:43:19 UTC+2, godm...@tiscali.it ha scritto:
| Quote: | Come leggete da titolo vorrei un consiglio da tutti coloro che hanno parecchia dimestichezza con java.
Sto realizzando una mia libreria di oggetti personalizzati, sto quidi creando una gerarchia a seconda del tipo di oggetto , in questo momento mi sto dedicando alle textfield.
ho una classe "madre" astratta
abstract class MyFormattedTextfield extends JFormattedTextField implements FocusListener{
.....
}
da cuiderivano altre classi , una ad esempio deve accettare solo i numeri e li deve formattare in decimali
public class MyTextFieldDecimal extends MyFormattedTextField {
public MyTextFieldDecimal() {
setHorizontalAlignment(javax.swing.JTextField.RIGHT);
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
DecimalFormat df = new DecimalFormat("0.00",dfs);
NumberFormatter dformatter = new NumberFormatter(df);
DefaultFormatterFactory formatter = new DefaultFormatterFactory(dformatter);
setFormatterFactory(formatter);
setValue(new Float(0));
}
Ho letto che per far si che la textfield acccetti solo numeri bisogna estendere
PlainDocument sovrascrivere insertString e assegnare tale oggetto Document alla JTextField:
public class Solo Numeri extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if(str!=null && str.matches("[\\d]*"))
super.insertString(offs, str, a);
}
}
e poi nel programma principale
MyDecimalTextField tf = new MyDecimalTextField();
tf.setDocument(new NumberDocument());
Devo dire che questo approccio non mi piace , nel senso che vorrei che questo filtro fosse già integrato nella classe MyDecimalTextField, il fatto è che tale classe extends già un'altra e non posso extendere anche PlainDocument.
Che fare allora ? implementare AbstractDocument o Document ?
Voi che fareste ? la mia nasce dal fatto che vorrei che in una classe ci fossero tutti i controlli per la classe stessa , però forse pur di non dover definire tutti i metodi di AbstractDocument o Document converrebbe cambiare approccio?
Attendo vostri consigli
grazie
|
Ti ringrazio dell'esempio ma non fa affatto quello che occorre a me. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|