Java/AWT e Swing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
+ codice inserito da 151.56.250.166 in w:JFormattedTextField alle 11:03 del 27 set 2006‎, pagina che poi è stata importata qui. Taglio una parte del codice. L'autore si è firmato come Fabrizio P.
Riga 17:
*AWT non comprende solo classi riguardanti strettamente la GUI, ma anche classi per la gestione della stampa, per la manipolazione di immagini, di forme geometriche, ecc.
Per questi motivi, il package java.awt e i suoi sottopackages risultano ancora oggi importati tantissimo e Swing va considerato non come un rimpiazzo di AWT, ma, piuttosto, come una sua estensione.
 
== Esempio ==
<source lang="Java">
class CustomFilter extends DefaultStyledDocument{
/*
* Controllo che il contenuto dei JFormattedTextField non superi i 25 caratteri.
*/
public void insertString(int offset, String str, AttributeSet a) throws BadLocationException {
/*
* str rappresenta la stringa che sta per essere scritta nel componente.
* Questo metodo infatti è chiamato prima di inserire del testo nel documento.
*/
int strLen = str.length();
int docLen = this.getLength();
if (docLen + strLen > CustomFilter.MAX_DIM)
if (docLen > CustomFilter.MAX_DIM)
super.insertString(offset, getText(0,CustomFilter.MAX_DIM), a); // scrive la stringa di testo nel documento
else{
int dimTextToSend = CustomFilter.MAX_DIM - docLen;
super.insertString(offset, str.substring(0,dimTextToSend), a);
} else
super.insertString(offset, str, a);
}
private static final int MAX_DIM = 25;
}
class CustomValueVerifier extends InputVerifier{
public boolean verify(JComponent input) {
/**
* verifica che sia stato inserito del testo nel componente JFormattedTextField
* e che contenga solo lettere o . In caso contrario il componente riottiene il focus
**/
JFormattedTextField jtf = (JFormattedTextField) input;
String text = jtf.getText().trim();
if (!text.equals("")){
for (int i=0; i<text.length();i++){
char ch = text.charAt(i);
if(!Character.isLetter(ch) && !( i>0 && Character.isSpaceChar(ch)))
return false;
}
jtf.setValue(text.toUpperCase(Locale.ITALY));
return true;
}
jtf.setValue(null);
return false;
}
}
</source>
 
== Approfondimenti ==
Alcuni strumenti sono stati messi a disposizione degli sviluppatori che hanno problemi con Swing o che non ne conoscono tutte le funzionalità.
Se hai problemi con Swing o cerchi una funzionalità che non conosci, puoi consultare:
 
*lo <tt>SwingSet2</tt>, che è un programmino dimostrativo delle funzionalità di Swing, ed è disponibile a [http://java.sun.com/products/jfc/jws/SwingSet2.jnlp questo indirizzo] e nella sottocartella <tt>/demo/jfc/SwingSet2</tt> del JDK. IL codice sorgente che crea gli oggetti Swing visibili sullo schermo è disponibile scegliendo la tab "Source code" all'interno del programma, e anche nella sottocartella <tt>/src</tt> della cartella in cui è il demo;
; Java Developer Kit
*lo <tt>SwingSet2</tt>, che è un programmino dimostrativo delle funzionalità di Swing, ed è disponibile a [http://java.sun.com/products/jfc/jws/SwingSet2.jnlp questo indirizzo] e nella sottocartella <tt>/demo/jfc/SwingSet2</tt> del JDK. ILIl codice sorgente che crea gli oggetti Swing visibili sullo schermo è disponibile scegliendo la tab "Source code" all'interno del programma, e anche nella sottocartella <tt>/src</tt> della cartella in cui è il demo;
*gli altri demo inclusi nel JDK sotto la cartella <tt>/demo/jfc/</tt>;
; Guide
*un'altra guida è disponibile tra i [http://download.oracle.com/javase/tutorial/ Java Tutorials] e prende il nome di [http://download.oracle.com/javase/tutorial/uiswing/index.html Creating a GUI with JFC/Swing];
*Anche in un altro tutorial è integrata una [http://download.oracle.com/javase/tutorial/ui/TOC.html piccola sezione] sullo Swing, più breve e forse meno completa, ma comunque utile.