Sto cercando di implementare la gestione di un evento di una casella di testo nel seguente modo:
codice:
/**
Crea un frame di ampiezza WIDTH ed altezza HEIGHT, acquisendo la risoluzione video
lo presenta a partire ad 1/4 delle sue coordinate.
*/
class tesiFrame extends JFrame{
//variabili posizione
private double x1aw[]=new double[100]; //casuali
private double y1aw[]=new double[100];
private int xaw[]=new int[100]; //convertite
private int yaw[]=new int[100];
private int kaw; //indice
/**
Costruttore
@param takap rappresenta la lunghezza dell'area di lavoro
@param habap rappresenta l'altezza dell'area di lavoro
@param Np rappresenta il numero di nodi
*/
public tesiFrame(int takap, int habap, int Np){
...
Container contentPane = getContentPane(); //contenitori di pannelli
//rilevatore di eventi
listener = new NawFieldListener();
//pannello di ricerca
JPanel bPanel = new JPanel();
nawField = new JTextField("00",3);
bPanel.add(nawField);
generaButton = new JButton("Genera");
bPanel.add(generaButton);
contentPane.add(bPanel, BorderLayout.NORTH);
//pannello grafo
clumpPanel panel = new clumpPanel(takaaw, habaaw, Naw, xaw, yaw, x1aw, y1aw);
contentPane.add(panel, BorderLayout.CENTER);
}//tesiFrame
/**
Imposta il numero di nodi sui valori memorizzati nel campo di testo
*/
public void setNodi(){
try{
//acquisisce quanto scritto ed elimina gli spazi vuoti
int num = Integer.parseInt(nawField.getText().trim());
clump.setNaw(num);
}catch(NumberFormatException e){
//non imposta il numero di nodi è errato
JOptionPane.showMessageDialog(null,"Devi inserire un numero intero!");
}//catch
}//setNodi
public static final int WIDTH = 500; //Ampiezza Frame
public static final int HEIGHT = 400; //Altezza Frame prima 350
private clumpPanel clump;
private DocumentListener listener; private JTextField nawField;
private JButton generaButton;
/**
Quando il testo subisce modifiche, viene chiamato uno dei seguenti tre metodi.
I primi due metodi vengono chiamati se sono stati inseriti o eliminati caratteri.
Il terzo metodo non viene chiamato per i campi testo.
*/
private class NawFieldListener implements DocumentListener{
public void insertUpdate(DocumentEvent e){ setNodi(); }
public void removeUpdate(DocumentEvent e){ setNodi(); }
public void changeUpdate(DocumentEvent e){ }
}//NawFieldListener
}//tesiFrame
in cui l'oggetto private clumpPanel clump usa il metodo clump.setNaw(num) così implementato:
codice:
/**
Un pannello che visualizza un grafo clump
*/
class clumpPanel extends JPanel{
private Color col1,col2,col3,col4; //colori
private double r; //raggio
private int k,l; //indici
private double Nd; //numero nodi casuali
private int Naw; //numero nodi
private int takaaw,habaaw; //lunghezza area grafo, altezza area grafo
private int kaw,iaw,jaw,i; //indici
//vettori posizione
private double x1aw[]=new double[100]; //casuali
double y1aw[]=new double[100];
private int xaw[]=new int[100]; //convertiti
private int yaw[]=new int[100];
/**
Costruttore
@param takap rappresenta la lunghezza dell'area di lavoro
@param habap rappresenta l'altezza dell'area di lavoro
@param Np rappresenta il numero di nodi
*/
public clumpPanel(int takap, int habap, int Np, int x[], int y[], double xc[], double yc[]){
...
}//clumpPanel
/**
restituisce la distanza tra la differeza di due punti
@param d1 rappresenta un valore di tipo double identicato come un punto
@param d2 rappresenta un valore di tipo double identicato come un punto
@param d2 rappresenta un valore di tipo double identicato come un punto
@param d3 rappresenta un valore di tipo double identicato come un punto
@param d4 rappresenta un valore di tipo double identicato come un punto
*/
public double d(double d1,double d2,double d3,double d4){
...
}//d
/**
Disegna il grafo
@param g di tipo Graphics rappresenta un oggetto atto a disegnare immagini e testi
*/
public void paintComponent(Graphics g){
super.paintComponents(g);
....
}//paintComponent
/**
Imposta il numero di nodi e la loro posizione;
@param n numero di nodi
*/
public void setNaw(int num){
Naw = num;
if(Naw==20){ //se il numero di nodi è 20 genera un numero di nodi casuali
Nd=4+46*Math.random();
Naw=(int)Nd;
}//if
for(kaw=0;kaw<Naw;kaw++){
//posiziona i nodi nel piano in modo casuale
x1aw[kaw]=Math.random()*(habaaw-30)+15;
y1aw[kaw]=Math.random()*(takaaw-30)+15;
xaw[kaw]=(int)x1aw[kaw];
yaw[kaw]=(int)y1aw[kaw];
}//for kaw
repaint();
}//setNaw
}//clumpPanel
ma quando compilo il file mi viene visualizzato il seguente messaggio di errore:
codice:
C:\Documents and Settings\Giuseppe\Documenti\Java Source\tesiTest.java:145: tesiFrame.NawFieldListener is not abstract and does not override abstract method changedUpdate(javax.swing.event.DocumentEvent) in javax.swing.event.DocumentListener
private class NawFieldListener implements DocumentListener{
^
1 error
Compilation interrupted
N.B. Si tenga presente che l'implementazione della classe NawFieldListener è stata riprodotta sulla falsa riga di un esempio preso dal libro Java 2 - I Fondamenti della Mc Graw Hill.