Label wird ungewollt mehrmals erstellt

Status
Nicht offen für weitere Antworten.

bristtote

Aktives Mitglied
Hallo Leute,

folgendes Problem:

Ich habe ein Array von Choices. Diese werden unter bestimmten Bedingungen gelöscht und wieder erstellt.
Das gleiche soll auch für die beiden Labels "g_z" und "plus" geschehen. Bei den Choices läuft alles einwandfrei, denn sobald die Bedingung erfüllt ist, werden sie gelöscht und weiter unten dann wieder erstellt.
Das eigentliches Problem sind die Labels. Wähle ich einen Item eines Choices, wird auch der Label erstellt bzw. gelöscht(so soll es auch sein). Das gleiche gilt auch für alle anderen Choices. Habe ich aber schon einen Item des z.B. ersten Choices und des z.B. zweiten Choices gewählt und möchte nun einen anderen Item des 1. Choices wählen , so entstehen auf einmal neue Labels!!! Bei den Choices funktioniert, wie gesagt alles einwandfrei. Das Ganze ist etwas kompliziert und nicht leicht zu schildern, deshalb bitte ich Euch nicht gleich wegzugehen und mir zu schreiben, wenn Ihr es nicht ganz versteht. Denn ich komme echt nicht weiter.
Hier der Code:



Code:
public class itemalsfunk extends Applet implements ActionListener {
	
	
	Panel Hauptpanel= new Panel();
	Color bg_co     = new Color(158,158,158);	
	Button b_b      = new Button("Los");
	Panel panel    [] = new Panel[12];
	String Items   [] = {"NOP", "ADD", "LOAD"};	
	Choice choices [] = new Choice [11];
	Choice c1      [] = new Choice [11];
	Choice c2      [] = new Choice [11];
	Choice cerg    [] = new Choice [11];
	Label labels   [] = new Label[11];
	Label g_z      = new Label("=");
	Label plus      = new Label("+");   
	TextField  t = new TextField(8); 
	

	
public void init () {
	Hauptpanel.setLayout(new GridLayout(0,1));	
	setBackground(bg_co);
        add(Hauptpanel);
        panel[11].add(b_b);
        b_b.addActionListener(this);  
        panel[11].add(t);

for (int i=0; i<panel.length; i++){
	panel[i]=new Panel();
	Hauptpanel.add(panel[i]);
 
	}

String s="0";
    
for (int i=0; i<labels.length; i++) {	
	labels[i] =new Label(s);
	int s1=Integer.parseInt(s);
	s1++;
	s=Integer.toString(s1);	
	panel[i].add(labels[i]);
	}
		
for ( int i = 0; i < choices.length; i++ ){
	choices[i] = new Choice();	
	panel[i].add(choices[i]);
	}



for (int i=0; i<choices.length; i++) {	
	choices[i].addItem(Items [0]);
	choices[i].addItem(Items [1]);	
	choices[i].addItem(Items [2]);
	}

for ( int i=0; i<choices.length; i++) {

  final int index = i;

  choices[i].addItemListener(new ItemListener(){
    public void itemStateChanged(ItemEvent e) {
 
    	if ( ItemEvent.SELECTED == 1){
       aendere( index, e.getItem() );
      }
    }
  });
}
	} 	
		
public void aendere( int index, Object item ){
  // wird immer aufgerufen, wenn "choice" ein neues "item" selektiert hat. Das item kann auch null sein!

     
if(item.equals("ADD")) {  
      
        if (cerg[index]!=null) {
        	 panel[index].remove(cerg[index]);
        	 panel[index].remove(g_z); 
        	 panel[index].remove(plus);        	
        	} 
        	
     	if    (c1[index] !=null) panel[index].remove(c1[index]);
      	if    (c2[index] !=null) panel[index].remove(c2[index]);      	
              
         
       c1[index]  = new Choice();
       c2[index]  = new Choice();
       cerg[index]= new Choice();
       g_z        = new Label("=");
       plus       = new Label("+");
        
       c1[index].add("R 0");
       c1[index].add("R 1");
      
       c2[index].add("R 0");
       c2[index].add("R 1");     
       
       cerg[index].add("R 1");
       cerg[index].add("R 2");      
       
       panel[index].add(cerg[index]);
       panel[index].add(g_z);	 
       panel[index].add(c1[index]);
       panel[index].add(plus);
       panel[index].add(c2[index]);       
    
      }     	  
      	     	     	  
   repaint();
      validate(); 
  }
 
public void paint (Graphics bs) {     

}

public void actionPerformed (ActionEvent e){
   	
   	}   	
  
   }

Hier noch zwei Bilder:

So sollte das Applet aussehen:
ok.bmp


Aber so sieht es aus:
nicht-ok.bmp


danke schon mal
 
Sorry, aber dein Code ist nicht funktionfähig!
Es sind jede Menge Fehler drin, speziell bei der Arbeit mit Arrays und der Anordnung der Komponenten in den Containern.
 
L-ectron-X hat gesagt.:
Sorry, aber dein Code ist nicht funktionfähig!
Es sind jede Menge Fehler drin, speziell bei der Arbeit mit Arrays und der Anordnung der Komponenten in den Containern.

Danke schön erstmal,

kannst Du mir da einige Beispiele nennen?
Ich dacht nämlich wirklich ich hätte alles richtig gemacht :cry:
 
Dominicana hat gesagt.:
satschli hat gesagt.:
kannst Du mir da einige Beispiele nennen?
Ich dacht nämlich wirklich ich hätte alles richtig gemacht :cry:

1. Wo ist die main-Methode??????
Oder ist das nur eine Sub-Klasse????


Ich brauche keine Main-Methode, da es sich hierbei um ein Applet handelt. Sieht man ja auch an der Init-Methode.

Aber das Problem habe ich jetzt gelöst. Ob da jetzt wirklich Fehler sind oder nicht, das Applet funktioniert jetzt einwandfrei. Ich musste nur jeweils ein Array für die beiden Labels einbauen.

Danke trotzdem
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben