Newsgroup: it.comp.java
Titolo: [newbie] problema x tenaci ;))

salve a tutti
spero che qualcuno abbia la pazienza di aiutarmi.
Sto testando i metodi della classe Vector, e  mi sono imbattuto in un 
grosso problema:
ho una chiamata ad una funzione void nel
public void actionPerformed(ActionEvent e)
in un evento di click di un bottone.
allora ( magari prima date un occhiata al codice ;)
quando premo il bottone "prossimo", ho in output l' elemento successivo 
del vettore.
nell evento source==prossimo, ho due istruzioni:
indice++  che fa avanzare l'indice da osservare
vedi();   chiamata a un metodo void.
continuando il programma ho aggiunto nel actionPerformed il controllo 
dell' evento click sul bottone "cancella"
in source==cancella ho, tra le altre cose, aggiunto una chiamata ad un' 
altro mio metodo,
special();
questo fa in modo che alcuni bottoni appaiano e altri scompaiano.
ed ecoci al punto: da quando ho aggiunto questa chiamata, nell' evento 
click di prossimo, oltre a cambiare indice del vettore, compaiono alcuni 
bottoni e altri scompaiono.
il bello è che in
source==prossimo
non ho nessuna chiamata al metodo void "special" !!!
( quello che fa apparire e scomp. vari pulsanti.
ah, un' altra cosa:
all' avvio della applet il compilatore mi da in warning:
deprecader APIs are used:Please recompire with the "deprecation" option 
for details.
può essere questo.
Aiutatemi, non so più cosa fare, tra l'altro sono un [newbie] ;))
grazie a tutti, ecco il codice (è molto semplice):
package marco;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import borland.jbcl.layout.*;
import borland.jbcl.control.*;
import java.util.*;
public class ClasseVector extends Applet implements ActionListener
{
   int operazione=0;
   int indice=0;
   String sindice="";
   String corrente="";
   int scelta=0;
   int bottone=0;
   Vector vec=new Vector(10,5);
   Button ok=new Button("Ok");
   Label v2=new Label("");
   Label p2=new Label("");
   TextField valore2=new TextField("");
   TextField parametro2=new TextField("");
   Button annulla=new Button("Annulla");
   Button prossimo=new Button("Prossimo");
   Button precedente=new Button("Precedente");
   Button aggiungi=new Button("Aggiungi");
   Button modifica=new Button("Modifica");
   Button cancella=new Button("Cancella");
   Label v=new Label("                Valore            ");
   TextField valore=new TextField("");
   Label p=new Label("             Posizione         ");
   TextField parametro=new TextField("");
  public void init()
  {
    sindice="" + indice;
    corrente="casa";
    vec.addElement("casa");
    vec.addElement("città");
    vec.addElement("porto");
    vec.addElement("strada");
    vec.addElement("cucina");
    corrente=(String)vec.elementAt(indice);
    valore.setText(corrente);
    parametro.setText(sindice);
    prossimo.addActionListener(this);
    precedente.addActionListener(this);
    aggiungi.addActionListener(this);
    modifica.addActionListener(this);
    cancella.addActionListener(this);
    ok.addActionListener(this);
    annulla.addActionListener(this);
    Panel pannello=new Panel();
    pannello.setLayout(new BorderLayout());
    Panel bpanel=new Panel(new GridLayout(15,1));
    bpanel.add(prossimo);
    bpanel.add(precedente);
    bpanel.add(aggiungi);
    bpanel.add(modifica);
    bpanel.add(cancella);
    bpanel.add(v);
    bpanel.add(valore);
    bpanel.add(p);
    bpanel.add(parametro);
    bpanel.add(ok);
    bpanel.add(annulla);
    bpanel.add(v2);
    bpanel.add(valore2);
    bpanel.add(p2);
    bpanel.add(parametro2);
    pannello.add(BorderLayout.CENTER,bpanel);
    add(pannello);
    ok.hide();
    annulla.hide();
    v2.hide();
    p2.hide();
    valore2.hide();
    parametro2.hide();
  }
  public void special()
  {
    prossimo.hide();
    precedente.hide();
    aggiungi.hide();
    modifica.hide();
    cancella.hide();
    v2.show();
    valore2.show();
    if (scelta==0)
    {
    p2.show();
    parametro2.show();
    }
    ok.show();
    annulla.show();
  }
  public void normal()
  {
      prossimo.show();
    precedente.show();
    aggiungi.show();
    modifica.show();
    cancella.show();
    v2.hide();
    p2.hide();
    valore2.hide();
    parametro2.hide();
    ok.hide();
    annulla.hide();
  }
  public void vedi()
  {
      sindice= "" + indice;
      corrente=(String)vec.elementAt(indice);
      valore.setText(corrente);
      parametro.setText(sindice);
  }
  public void actionPerformed(ActionEvent e)
  {
    Object source=e.getSource();
    if (source==prossimo)
    {
      indice++;
      vedi();
    }
    if (source==precedente)
    {
      indice--;
      vedi();
    }
    if (source==aggiungi)
    {
       v.setText("Vecchio valore");
       p.setText("Sua posizione");
       v2.setText("Inserisci il nuovo valore");
       p2.setText("Inserisci la posizione");
       valore2.setText(corrente);
       bottone=1;
       scelta=1;
       special();
    }
    if(source==modifica)
    {
      scelta=0;
      bottone=2;
      v2.setText("Nuovo valore");
      p2.setText("Posizione da modificare");
      valore2.setText(corrente);
      parametro2.setText(sindice);
      special();
    }
    if(source==cancella);
    {
      scelta=1;
      bottone=3;
      v2.setText("Valore da cancellare");
      valore2.setText(corrente);
      special();//ecco, se metto questa come commento,non ho errori
    }
    if(source==annulla)
    {
       normal();
    }
    if(source==ok)
    {
       if(bottone==1)
       {
          corrente=(String)vec.lastElement();
          indice=vec.indexOf(corrente);
          corrente=valore2.getText();
          vec.addElement(corrente);
          normal();
          indice=0;
          vedi();
       }
       if(bottone==2)
       {
          sindice=parametro2.getText();
          indice=Integer.parseInt(sindice);
          vec.removeElementAt(indice);
          corrente=valore2.getText();
          vec.insertElementAt(corrente,indice);
          indice=0;
          vedi();
          normal();
       }
      // if(bottone==3)
  //     {
   //      corrente=valore2.getText();
   //      vec.removeElement(corrente);
   //      indice=0;
   //      normal();
       //}
    }
  }
  public static void main (String a[])
  {
    Frame vettore=new Frame("Classe Vector");
    ClasseVector applet=new ClasseVector();
    vettore.add(applet);
    applet.init();
    vettore.setSize(600,500);
    vettore.show();
    vettore.addWindowListener(new WindowAdapter()
    {
      public void windowClosing(WindowEvent e){
      System.out.println("chiuso");
      System.exit(0);
      }
    });
  }
}

 ha scritto nel messaggio
news:3D81FCD1...@tin.it...

Risolvi mettendo una return alla fine di ogni if nell'actionperformed,
comunque sia sbagli nell'impostazione; se implementi correttamente il
modello ad  eventi del jdk (dall'1.1 in poi) devi gestire un actionListener
separato per ogni pulsante, questa è la cosa più pulita.
il deprecation warning è legato al fatto che usi i metodi show() e hide()
che sono sconsigliati dalla sun, sostituiscili con il metodo
setVisible(boolean) con boolen true che equivale allo show.
Ciao
  Cosimo