AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

consiglio "da esperti" per gerarchia classi

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
godmetal@tiscali.it
Guest





PostPosted: Sat Jun 02, 2012 10:43 pm    Post subject: consiglio "da esperti" per gerarchia classi Reply with 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
Back to top
godmetal@tiscali.it
Guest





PostPosted: Sat Jun 02, 2012 11:44 pm    Post subject: Re: consiglio "da esperti" per gerarchia classi Reply with quote



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 ...Wink
Back to top
godmetal@tiscali.it
Guest





PostPosted: Mon Jun 04, 2012 8:40 pm    Post subject: Re: consiglio "da esperti" per gerarchia classi Reply with quote



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 ...Wink

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





PostPosted: Tue Jun 05, 2012 6:27 am    Post subject: Re: consiglio "da esperti" per gerarchia classi Reply with quote

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





PostPosted: Tue Jun 05, 2012 9:33 pm    Post subject: Re: consiglio "da esperti" per gerarchia classi Reply with quote

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





PostPosted: Wed Jun 06, 2012 10:44 am    Post subject: Re: consiglio "da esperti" per gerarchia classi Reply with quote

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





PostPosted: Wed Jun 06, 2012 9:45 pm    Post subject: Re: consiglio "da esperti" per gerarchia classi Reply with quote

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





PostPosted: Thu Jun 07, 2012 9:16 am    Post subject: Re: consiglio "da esperti" per gerarchia classi Reply with quote

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





PostPosted: Thu Jun 07, 2012 9:16 pm    Post subject: Re: consiglio "da esperti" per gerarchia classi Reply with quote

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





PostPosted: Fri Jun 08, 2012 7:24 am    Post subject: Re: consiglio "da esperti" per gerarchia classi Reply with quote

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





PostPosted: Sat Jun 09, 2012 3:25 pm    Post subject: Re: consiglio "da esperti" per gerarchia classi Reply with quote

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
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.