Hallo,
ich erzeuge in meiner Hauptklasse ein Objekt der inneren Klasse.
Bis auf einer Sache klappt alles ganz gut. Das Problem ist die Methode "rufItem". Diese soll überprüfen, ob sich an dem Status der Choices etwas verändert hat. ist dann z.B.
dann werden neue Choices erstellt. Das Problem ist hierbei nun, dass Choices zwar erstellt werden, aber sofort nach 1 Sekunde wieder verschwinden. Dieses Problem ist gelöst, wenn ich sowohl die Methode "rufItem" , als auch die Methode "aendere" direkt in der Hauptklasse initialisiere. Ich weiss jetzt nicht, was ich genau falsch gemacht habe. Bitte helft mir :roll:
Wenn Ihr etwas nicht versteht, dann fragt bitte und geht nicht einfach weg, danke
Hier der Code:
ich erzeuge in meiner Hauptklasse ein Objekt der inneren Klasse.
Bis auf einer Sache klappt alles ganz gut. Das Problem ist die Methode "rufItem". Diese soll überprüfen, ob sich an dem Status der Choices etwas verändert hat. ist dann z.B.
Code:
ItemEvent.SELECTED == 1
Wenn Ihr etwas nicht versteht, dann fragt bitte und geht nicht einfach weg, danke
Hier der Code:
Code:
public class Test extends Applet
{
HauptPanel p= new HauptPanel();
public void init()
{
add(p);
setBackground(p.bgCo);
}
}
class HauptPanel extends Panel
{
Color bgCo = new Color(158,158,158);
Button buttonL = new Button("Los");
TextField t = new TextField(8);
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 gleich [] = new Label[11];
Label plus [] = new Label[11];
String g ="=";
String p ="+";
HauptPanel()
{
setLayout(new GridLayout(0,1));
setBackground(bgCo);
panelsEinfuegen();
labelsEinfuegen();
choicesEinfuegen();
panel[11].add(buttonL);
panel[11].add(t);
rufItem();
}
public void panelsEinfuegen()
{
for (int i=0; i<panel.length; i++)
{
panel[i]=new Panel();
add(panel[i]);
}
}
public void choicesEinfuegen()
{
for (int i=0; i<choices.length; i++)
{
choices[i] = new Choice();
choices[i].addItem(items [0]);
choices[i].addItem(items [1]);
choices[i].addItem(items [2]);
panel[i].add(choices[i]);
}
}
public void labelsEinfuegen()
{
for (int i=0; i<labels.length; i++)
{
labels[i]=new Label(String.valueOf(i));
gleich[i] =new Label(g);
plus[i] =new Label(p);
panel[i].add(labels[i]);
}
}
public void rufItem()
{
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(gleich[index]);
panel[index].remove(plus[index]);
panel[index].remove(c1[index]);
panel[index].remove(c2[index]);
}
c1[index] = new Choice();
c2[index] = new Choice();
cerg[index]= new Choice();
gleich[index] = new Label("=");
plus[index]= 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(gleich[index]);
panel[index].add(c1[index]);
panel[index].add(plus[index]);
panel[index].add(c2[index]);
}
else if(item.equals("LOAD"))..........................// Hier geht es weiter mit den anderen beiden Items LOAD und NOP
repaint();
validate();
}
}