Newsgroup: it.comp.java
Titolo: ereditarieta'

Il problema e' il seguente.
Costruisco una classe SchedaMadre in un modo da fare una griglia di
pannelli con label, bottoni, textfield....quando poi definisco un'altra
classe AggiornaScheda e cerco di specializzare la classe precedente per
esempio cambiando i nomi alle label e aggiungendo i metodi ai bottoni
non so come implementare l' ereditarieta' !!
Se avete la pazienza di leggerli allego i 2 codici un po' mutilati per
essere un po' piu' leggibili!!!
Spero di essere stata chiara!
Grazie a tutti!
Ros
import varie....;
public class SchedaMadre extends Panel{
      public void inizio(){
 setLayout(new GridLayout(6,1));
 Panel Dizionario = new Panel();
 Dizionario.setLayout(new FlowLayout(FlowLayout.LEFT,50,50));
 Label diz = new Label();
 Button si = new Button("SI");
 Button no = new Button("NO");
 Dizionario.add(diz);
 Dizionario.add(si);
 Dizionario.add(no);
 Panel RicercaScheda = new Panel();
 RicercaScheda.setLayout(new FlowLayout(FlowLayout.LEFT,50,50));
 Label lb = new Label();
 JLabel lbim = new JLabel(icon);
 TextField tf= new TextField("",10);
 tf.setEditable(false);
 RicercaScheda.add(lb);
 RicercaScheda.add(lbim);
 Panel ConfermaScheda=new Panel();
 ConfermaScheda.setLayout(new FlowLayout(FlowLayout.LEFT,50,2));
 Button uno = new Button("OK");
 Button due = new Button("ANNULLA");
 Panel Scheda1 = new Panel();
 Scheda1.setLayout(new FlowLayout(FlowLayout.LEFT,50,25));
 Label numsc =new Label();
 Scheda1.add(numsc);
 TextField ft= new TextField("0",11);
 Panel Conferma = new Panel();
 Label vuoi = new Label ();
 Conferma.add(vuoi);
 Conferma.setLayout(new FlowLayout(FlowLayout.LEFT,50,2));
 Button primo = new Button("SI");
 Button secondo = new Button("NO");
 RicercaScheda.add(tf);
 Scheda1.add(ft);
 ConfermaScheda.add(uno);
 ConfermaScheda.add(due);
 primo.setEnabled(false);
 secondo.setEnabled(false);
 Conferma.add(primo);
 Conferma.add(secondo);
 Panel PrecSucc=new Panel();
 PrecSucc.setLayout(new FlowLayout(FlowLayout.RIGHT,30,20));
 PrecSucc.setBackground(Color.white);
 JButton terzo = new JButton("Pagina Precedente",icon3);
 JButton quarto = new JButton("Pagina Successiva",icon2);
 PrecSucc.add(terzo);
 PrecSucc.add(quarto);
 add(Dizionario);
 add(RicercaScheda);
 add(ConfermaScheda);
 add(Scheda1);
 add(Conferma);
 add(PrecSucc);
    }
}
///////////////////////////////////////////////////////////////////////////////
import  ........
import SchedaMadre;
public class AggiornaScheda extends SchedaMadre {
    JTabbedPane J;
    public void inizio(JTabbedPane j){
 J = j;
  GestPulsConfermaAggiornamento gpca;
 GestPulsConfermaCopia gpcc;
 GestPulsRicercaDiz gprd;
 Panel Dizionario = ??????????????
 ..........
Come faccio a dare i metodi ai bottoni e per esempio a risalire a
Dizionario?

Mi pare che tu abbia fatto un po' di casino. In particolare il tuo Panel
'Dizionario' e' definito come variabile locale di Inizio(), quindi non e' un
membro di classe ed esiste solo all'interno della funzione Inizia.
Quindi non puoi 'accedervi' dalla classe derivata perche' tale oggetto non
esiste.
Consiglio: usa delle variabili di classe, inizializzale nel costruttore e
nella classe derivata usa super() per costruire l'oggetto della classe -
mamma. Poi puoi accedere alle variabili della classe 'mamma'.
Davide

 esiste.
In effetti il codice che ho "postato" non era quello che stavo facendo girare,
perche' nell ' insicurezza di dire una "cavolata" ho preferito avere dei
suggerimenti.
Il codice che funziona a meta' e' :
import.......;
import SchedaMadre;
public class AggiornaScheda extends SchedaMadre {
    JTabbedPane J;
   public void inizio(JTabbedPane j){
 SchedaMadre Schede = new SchedaMadre();
 Schede.inizio();
J = j;
 GestPulsConfermaAggiornamento gpca;
 GestPulsConfermaCopia gpcc;
 GestPulsRicercaDiz gprd;
 Panel Dizionario = (Panel)Schede.getComponent(0);
.......... qui accedo a Dizionario...............
 Label diz = (Label)Dizionario.getComponent(0);
 diz.setText("Vuoi accedere al dizionario per cercare la scheda da copiare ?");
 .............cosi' settavo la label................
Pero' eseguendo questo codice pezzi di SchedaMadre che qui non sono modificati,
non vengono proprio visualizzati!
Ciao e grazie!

 
PEr risalire al Dizionario basta usare uno dei metodi getComponent() della
classe Container:
ad esempio
Panel Dizionario= super().getComponent(0);
dove 0 e' il numero d'ordine del componente (il primo ad essere stato
aggiunto nel panel principale).
puoi anche usare il metodo getComponents() che restituisce un array di
componenti, e poi scandendo questo array arrivi con il confronto al
componente cercato.
oppure 
siccome ogni componente ha un nome di tipo Stringa che lo identifica puoi:
Component[] comp=super.getComponents();
while(!comp[i].getName().equals("Dizionario")) i++;
Panel Dizionario=(Panel)comp[i];
NOTA: Nel costruttore di ogni componente o comunque alla sua
inizializzazione devi pero' impostare il nome:
esempio (in classe SchedaMadre):
Panel DIzionario=new PAnel();
Dizionario.setName("Dizionario");
per il resto non credo di aver capito bene la domanda!
ciao