Änderung in JCombobox ausgeben

Moin moin,

ich komme einfach nicht drauf. Warum wird mir bei Änderung in der Combobox nichts ausgegeben?
Rein „technisch“ sollte es doch funktionieren.

package grafiktest;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.Button;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JComboBox;

public class GrafikTest extends JApplet implements Runnable
{
private MyContentPane myContent = null;

@Override
public void init()
{
myContent = new MyContentPane();
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(myContent, BorderLayout.NORTH);
this.start();
}

public void run()
{
boolean running = true;
while(running)
{
super.repaint();
try
{
Thread.sleep(200);
}
catch(InterruptedException error)
{
running = false;
}
}
}

class MyContentPane extends JPanel
{
private Button abschicken = null;
private Button loeschen = null;
private JLabel nameLabel = null;
private JLabel vornameLabel = null;
private JLabel emailLabel = null;
private JCheckBox cb1 = null;
private JCheckBox cb2 = null;
private JCheckBox cb3 = null;
private JCheckBox cb4 = null;
private JTextField tf1 = null;
private JTextField tf2 = null;
private JTextField tf3 = null;
private JComboBox ch1 = null;

//private static final long serialVersionUID = 1L;
private JComboBox select;

public MyContentPane()
{
init();
addElements();
}

public MyContentPane(String name)
{
this.setName(name);
init();
addElements();
}

private void init()
{
abschicken = new Button(„Abschicken“);
abschicken.setActionCommand(„abschicken“);
abschicken.addActionListener(new ActionAdapter(this));

loeschen = new Button(„löschen“);
loeschen.setActionCommand(„löschen“);
loeschen.addActionListener(new ActionAdapter(this));

nameLabel = new JLabel(„Name:“);
vornameLabel = new JLabel(„Vorname:“);
emailLabel = new JLabel(„E-Mail:“);

cb1 = new JCheckBox(„Freunde“, false);
cb2 = new JCheckBox(„Werbung“, true);
cb3 = new JCheckBox(„Suchmaschine“, false);
cb4 = new JCheckBox(„Suchmaschien“, false);

tf1 = new JTextField(15);
tf2 = new JTextField(15);
tf3 = new JTextField(15);

ch1 = new JComboBox ();
ch1.addItem(„Deutsch“);
ch1.addItem(„Französisch“);
ch1.addItem(„Spanisch“);
ch1.addItem(„Italienisch“);
ch1.addItem(„Dänisch“);

}

private void addElements()
{
GridBagLayout gridBagLayout = new GridBagLayout();
GridBagConstraints constr = new GridBagConstraints();
this.setLayout(new GridBagLayout());

constr.ipadx = 0;
constr.ipady = 0;
constr.gridx = 10;
constr.gridy = 10;
constr.anchor = GridBagConstraints.NORTHWEST;

constr.gridx = 13;
constr.gridy = 24;
this.add(abschicken, constr);

constr.gridx = 13;
constr.gridy = 25;
this.add(loeschen, constr);

constr.gridx = 12;
constr.gridy = 20;
this.add(nameLabel, constr);

constr.gridy = 21;
this.add(vornameLabel, constr);

constr.gridy = 22;
this.add(emailLabel, constr);

constr.gridx = 13;
constr.gridy = 20;
this.add(tf1, constr);

constr.gridy = 21;
this.add(tf2, constr);

constr.gridy = 22;
this.add(tf3, constr);

constr.gridx = 13;
constr.gridy = 9;
this.add(cb1, constr);

constr.gridy = 10;
this.add(cb2, constr);

constr.gridy = 11;
this.add(cb3, constr);

constr.gridy = 12;
this.add(cb4, constr);

constr.gridy = 26;
constr.gridx = 13;
this.add(ch1, constr);

}

public Button getAbschicken()
{
return abschicken;
}

public void setAbschicken(Button abschicken)
{
this.abschicken = abschicken;
}

public Button getLoeschen()
{
return loeschen;
}

public void setLoeschen(Button loeschen)
{
this.loeschen = loeschen;
}

public JComboBox getSelect()
{
return select;
}

public void setSelect(JComboBox select)
{
this.select = select;
}

}
class ActionAdapter implements ActionListener
{

private MyContentPane myContent = null;

public ActionAdapter(JPanel myContentPane)
{
this.myContent = (MyContentPane)myContentPane;
}
ItemListener ItemSelect = new ItemListener()

{
JComboBox ch1 = new JComboBox();

public void itemStateChanged(ItemEvent e)
{
String nationalitaet = null;
if (ch1.getSelectedItem().equals(„Deutsch“))
nationalitaet=„Deutsch“;
if (ch1.getSelectedItem().equals(„Französisch“))
nationalitaet=„Franzoesisch“;
if (ch1.getSelectedItem().equals(„Spanisch“))
nationalitaet=„Spanisch“;
if (ch1.getSelectedItem().equals(„Italienisch“))
nationalitaet=„Italienisch“;
if (ch1.getSelectedItem().equals(„Dänisch“))
nationalitaet=„Daenisch“;

System.out.println(„Die Nationalitaet ist „+nationalitaet+“.“);
}

};

public void actionPerformed(ActionEvent actionEvent)
{
if(actionEvent.getActionCommand().equals(„abschicken“))
{
System.out.println(„Der Abschicken-Button wurde gedrückt“);
}

if(actionEvent.getActionCommand().equals(„löschen“))
{
System.out.println(„Der Löschen-Button wurde gedrückt“);
}
}
}
}

Habt ihr ne Idee?

Gruß Rolf

Jetzt mal auf die Schnelle gelesen, sehe ich nur das du zwei mal eine Variable mit dem Namen ch1 hast. Da dieser beiden Variablen auch zweimal ein Object zugeordnet werden, schätze ich mal die wirst die erste JComboBox ändern und auf der zweiten den Wert abfragen was natürlich dann so nicht funktioniert.

LG Matthias

Moin moin,

ich komme einfach nicht drauf. Warum wird mir bei Änderung in
der Combobox nichts ausgegeben?
Rein „technisch“ sollte es doch funktionieren.

package grafiktest;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.Button;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JComboBox;

public class GrafikTest extends JApplet implements Runnable
{
private MyContentPane myContent = null;

@Override
public void init()
{
myContent = new MyContentPane();
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(myContent, BorderLayout.NORTH);
this.start();
}

public void run()
{
boolean running = true;
while(running)
{
super.repaint();
try
{
Thread.sleep(200);
}
catch(InterruptedException error)
{
running = false;
}
}
}

class MyContentPane extends JPanel
{
private Button abschicken = null;
private Button loeschen = null;
private JLabel nameLabel = null;
private JLabel vornameLabel = null;
private JLabel emailLabel = null;
private JCheckBox cb1 = null;
private JCheckBox cb2 = null;
private JCheckBox cb3 = null;
private JCheckBox cb4 = null;
private JTextField tf1 = null;
private JTextField tf2 = null;
private JTextField tf3 = null;
private JComboBox ch1 = null;

//private static final long serialVersionUID = 1L;
private JComboBox select;

public MyContentPane()
{
init();
addElements();
}

public MyContentPane(String name)
{
this.setName(name);
init();
addElements();
}

private void init()
{
abschicken = new Button(„Abschicken“);
abschicken.setActionCommand(„abschicken“);
abschicken.addActionListener(new ActionAdapter(this));

loeschen = new Button(„löschen“);
loeschen.setActionCommand(„löschen“);
loeschen.addActionListener(new ActionAdapter(this));

nameLabel = new JLabel(„Name:“);
vornameLabel = new JLabel(„Vorname:“);
emailLabel = new JLabel(„E-Mail:“);

cb1 = new JCheckBox(„Freunde“, false);
cb2 = new JCheckBox(„Werbung“, true);
cb3 = new JCheckBox(„Suchmaschine“, false);
cb4 = new JCheckBox(„Suchmaschien“, false);

tf1 = new JTextField(15);
tf2 = new JTextField(15);
tf3 = new JTextField(15);

ch1 = new JComboBox ();
ch1.addItem(„Deutsch“);
ch1.addItem(„Französisch“);
ch1.addItem(„Spanisch“);
ch1.addItem(„Italienisch“);
ch1.addItem(„Dänisch“);

}

private void addElements()
{
GridBagLayout gridBagLayout = new GridBagLayout();
GridBagConstraints constr = new GridBagConstraints();
this.setLayout(new GridBagLayout());

constr.ipadx = 0;
constr.ipady = 0;
constr.gridx = 10;
constr.gridy = 10;
constr.anchor = GridBagConstraints.NORTHWEST;

constr.gridx = 13;
constr.gridy = 24;
this.add(abschicken, constr);

constr.gridx = 13;
constr.gridy = 25;
this.add(loeschen, constr);

constr.gridx = 12;
constr.gridy = 20;
this.add(nameLabel, constr);

constr.gridy = 21;
this.add(vornameLabel, constr);

constr.gridy = 22;
this.add(emailLabel, constr);

constr.gridx = 13;
constr.gridy = 20;
this.add(tf1, constr);

constr.gridy = 21;
this.add(tf2, constr);

constr.gridy = 22;
this.add(tf3, constr);

constr.gridx = 13;
constr.gridy = 9;
this.add(cb1, constr);

constr.gridy = 10;
this.add(cb2, constr);

constr.gridy = 11;
this.add(cb3, constr);

constr.gridy = 12;
this.add(cb4, constr);

constr.gridy = 26;
constr.gridx = 13;
this.add(ch1, constr);

}

public Button getAbschicken()
{
return abschicken;
}

public void setAbschicken(Button abschicken)
{
this.abschicken = abschicken;
}

public Button getLoeschen()
{
return loeschen;
}

public void setLoeschen(Button loeschen)
{
this.loeschen = loeschen;
}

public JComboBox getSelect()
{
return select;
}

public void setSelect(JComboBox select)
{
this.select = select;
}

}
class ActionAdapter implements ActionListener
{

private MyContentPane myContent = null;

public ActionAdapter(JPanel myContentPane)
{
this.myContent = (MyContentPane)myContentPane;
}
ItemListener ItemSelect = new ItemListener()

{
JComboBox ch1 = new JComboBox();

public void itemStateChanged(ItemEvent e)
{
String nationalitaet = null;
if (ch1.getSelectedItem().equals(„Deutsch“))
nationalitaet=„Deutsch“;
if (ch1.getSelectedItem().equals(„Französisch“))
nationalitaet=„Franzoesisch“;
if (ch1.getSelectedItem().equals(„Spanisch“))
nationalitaet=„Spanisch“;
if (ch1.getSelectedItem().equals(„Italienisch“))
nationalitaet=„Italienisch“;
if (ch1.getSelectedItem().equals(„Dänisch“))
nationalitaet=„Daenisch“;

System.out.println(„Die Nationalitaet ist
„+nationalitaet+“.“);
}

};

public void actionPerformed(ActionEvent actionEvent)
{
if(actionEvent.getActionCommand().equals(„abschicken“))
{
System.out.println(„Der Abschicken-Button wurde gedrückt“);
}

if(actionEvent.getActionCommand().equals(„löschen“))
{
System.out.println(„Der Löschen-Button wurde gedrückt“);
}
}
}
}

Habt ihr ne Idee?

Gruß Rolf

Jetzt mal auf die Schnelle gelesen, sehe ich nur das du zwei
mal eine Variable mit dem Namen ch1 hast. Da dieser beiden
Variablen auch zweimal ein Object zugeordnet werden, schätze
ich mal die wirst die erste JComboBox ändern und auf der
zweiten den Wert abfragen was natürlich dann so nicht
funktioniert.

LG Matthias

Servus,

hmmm - ich finds nur einmal -->

JComboBox ch1 = new JComboBox();

public void itemStateChanged(ItemEvent e)
{
String nationalitaet = null;
if (ch1.getSelectedItem().equals(„Deutsch“))
nationalitaet=„Deutsch“;
if (ch1.getSelectedItem().equals(„Französisch“))
nationalitaet=„Franzoesisch“;
if (ch1.getSelectedItem().equals(„Spanisch“))
nationalitaet=„Spanisch“;
if (ch1.getSelectedItem().equals(„Italienisch“))
nationalitaet=„Italienisch“;
if (ch1.getSelectedItem().equals(„Dänisch“))
nationalitaet=„Daenisch“;

System.out.println(„Die Nationalitaet ist „+nationalitaet+“.“);
}

};

Wo genau meinst du?

Gruß Rolf

Und am Anfang der classe MyContentPane hast du sie schon mal drinnen! Dort werden dann auch die werte reingeschrieben, sonst wäre die ComboBox ja leer :wink:

Schau dir einfach noch mal meinen Post an, dort hab ich die Stellen im code fett markiert

LG Matthias

Ok, aber welches gehört nun weg? Und welches woanders hin?

Rein von der Logik her kann ich dem ganzen nicht mehr folgen.

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das ist aber schlecht, wenn du der Logik von deinem eigenen Programm nicht mehr folgen kannst.

Am besten tust du das letzte ch1 beim ItemSelect weg. Nur irgendwie frage ich mich, wie er in diese Methode reinkommen soll, du setzt bei der ComboBox nie einen Listener

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

(((

Ganz ehrlich? Is mein „erstes“ Java-„Project“

Ich komm eher aus der PHP / VB Ecke… versuch mich halt mit neuem :smile:

Also - Das letzte hab ich raus. Aber so richtig was tun tut er ned.
Was meinst du mit _Nur

irgendwie frage ich mich, wie er in diese Methode reinkommen
soll, du setzt bei der ComboBox nie einen Listener_

Ich weiss - es gibt im Netz xtausende von Anleitungen Tutorials etc., aber glaubt mir ich hab viele gelesen und trotzdem klappt es nicht, daher wollte ich es für nen „Dummie“ erkkärt haben, wenn das geht.

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Also… der ItemListener hat in der Klasse ActionAdapter nichts zu suchen und damit der ItemListener auch was tun kann, musst du der JComboBox auch mitteilen, dass sie änderungen an dieses Object weiterleiten soll mit ch1.setItemListener

bei mir schaut der ganze Code dann ungefähr so aus

package grafiktest;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.Button;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JComboBox;

public class GrafikTest extends JApplet implements Runnable
{
private MyContentPane myContent = null;


@Override
public void init()
{
myContent = new MyContentPane();
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(myContent, BorderLayout.NORTH);
this.start();
}

public void run()
{
boolean running = true;
while(running)
{
super.repaint();
try
{
Thread.sleep(200);
}
catch(InterruptedException error)
{
running = false;
}
}
}


class MyContentPane extends JPanel
{
private Button abschicken = null;
private Button loeschen = null;
private JLabel nameLabel = null;
private JLabel vornameLabel = null;
private JLabel emailLabel = null;
private JCheckBox cb1 = null;
private JCheckBox cb2 = null;
private JCheckBox cb3 = null;
private JCheckBox cb4 = null;
private JTextField tf1 = null;
private JTextField tf2 = null;
private JTextField tf3 = null;
private JComboBox ch1 = null;

//private static final long serialVersionUID = 1L;
private JComboBox select;

public MyContentPane()
{
init();
addElements();
}

public MyContentPane(String name)
{
this.setName(name);
init();
addElements();
}

private void init()
{
abschicken = new Button("Abschicken");
abschicken.setActionCommand("abschicken");
abschicken.addActionListener(new ActionAdapter(this));

loeschen = new Button("löschen");
loeschen.setActionCommand("löschen");
loeschen.addActionListener(new ActionAdapter(this));

nameLabel = new JLabel("Name:");
vornameLabel = new JLabel("Vorname:");
emailLabel = new JLabel("E-Mail:");

cb1 = new JCheckBox("Freunde", false);
cb2 = new JCheckBox("Werbung", true);
cb3 = new JCheckBox("Suchmaschine", false);
cb4 = new JCheckBox("Suchmaschien", false);

tf1 = new JTextField(15);
tf2 = new JTextField(15);
tf3 = new JTextField(15);

ch1 = new JComboBox ();
ch1.addItem("Deutsch");
ch1.addItem("Französisch");
ch1.addItem("Spanisch");
ch1.addItem("Italienisch");
ch1.addItem("Dänisch");

ItemListener itemSelect = new ItemListener()
{

 public void itemStateChanged(ItemEvent e)
 {
 String nationalitaet = null;
 if (ch1.getSelectedItem().equals("Deutsch"))
 nationalitaet="Deutsch";
 if (ch1.getSelectedItem().equals("Französisch"))
 nationalitaet="Franzoesisch";
 if (ch1.getSelectedItem().equals("Spanisch"))
 nationalitaet="Spanisch";
 if (ch1.getSelectedItem().equals("Italienisch"))
 nationalitaet="Italienisch";
 if (ch1.getSelectedItem().equals("Dänisch"))
 nationalitaet="Daenisch";

 System.out.println("Die Nationalitaet ist "+nationalitaet+".");
 }

};
ch1.addItemListener(itemSelect);

}

private void addElements()
{
GridBagLayout gridBagLayout = new GridBagLayout();
GridBagConstraints constr = new GridBagConstraints();
this.setLayout(new GridBagLayout());

constr.ipadx = 0;
constr.ipady = 0;
constr.gridx = 10;
constr.gridy = 10;
constr.anchor = GridBagConstraints.NORTHWEST;

constr.gridx = 13;
constr.gridy = 24;
this.add(abschicken, constr);

constr.gridx = 13;
constr.gridy = 25;
this.add(loeschen, constr);

constr.gridx = 12;
constr.gridy = 20;
this.add(nameLabel, constr);

constr.gridy = 21;
this.add(vornameLabel, constr);

constr.gridy = 22;
this.add(emailLabel, constr);

constr.gridx = 13;
constr.gridy = 20;
this.add(tf1, constr);

constr.gridy = 21;
this.add(tf2, constr);

constr.gridy = 22;
this.add(tf3, constr);

constr.gridx = 13;
constr.gridy = 9;
this.add(cb1, constr);

constr.gridy = 10;
this.add(cb2, constr);

constr.gridy = 11;
this.add(cb3, constr);

constr.gridy = 12;
this.add(cb4, constr);

constr.gridy = 26;
constr.gridx = 13;
this.add(ch1, constr);

}

public Button getAbschicken()
{
return abschicken;
}

public void setAbschicken(Button abschicken)
{
this.abschicken = abschicken;
}

public Button getLoeschen()
{
return loeschen;
}

public void setLoeschen(Button loeschen)
{
this.loeschen = loeschen;
}

public JComboBox getSelect()
{
return select;
}

public void setSelect(JComboBox select)
{
this.select = select;
}

}
class ActionAdapter implements ActionListener
{

private MyContentPane myContent = null;

public ActionAdapter(JPanel myContentPane)
{
this.myContent = (MyContentPane)myContentPane;
}

public void actionPerformed(ActionEvent actionEvent)
{
if(actionEvent.getActionCommand().equals("abschicken"))
{
System.out.println("Der Abschicken-Button wurde gedrückt");
}

if(actionEvent.getActionCommand().equals("löschen"))
{
System.out.println("Der Löschen-Button wurde gedrückt");
}
}
}
}

Hallo Lucifer,

das also meintest du mit du setzt bei der ComboBox nie einen Listener

-)

Ja, da stand ich ja voll auf dem Schlauch, danke dir!

Super echt - merci.

Gruß Rolf

hi rolf,
schön zu sehen das du weiter machst mit den Programm, aber das mit deinen ItemListener im ActionAdapter verstehe ich nicht ganz warum du das so machts?!?

du brauchst doch nur die actionPerform(ActionEvent actionEvent) erweitern um

JComboBox box = (JComboBox)actionEvent.getSource();
int select = box.getSelectedIndex();

über den Index kannst mittels Array die richtigen String-Werte zusortieren oder du lässt dir gleich die Values von der Combobox geben.

ACHTUNG:
dieser Adapter funzt dann nur für Swing-Objekte vom Typ JComboBox, durch das Casting bedingt

(JComboBox)actionEvent.getSource():wink:

oder musst dir eine nicht sehr elegante Umgehung mittels try-catch basteln. Die besste Lösung ist halt mehre ActionAdapter „bauen“.

1 Like

hups habe ich vergessen zu schreiben

dein „geliebter“ ItemListener ist ein Interface und deshalb ist das hier falsch:

.
.
.
 public ActionAdapter(JPanel myContentPane)
 {
 this.myContent = (MyContentPane)myContentPane;
 }

 _**ItemListener ItemSelect = new ItemListener()  
  
 {  
 JComboBox ch1 = new JComboBox();  
  
 public void itemStateChanged(ItemEvent e)  
 {  
 String nationalitaet = null;  
 if (ch1.getSelectedItem().equals("Deutsch"))  
 nationalitaet="Deutsch";  
 if (ch1.getSelectedItem().equals("Französisch"))**_  
  
.
.
.

ein Interface wird immer mittels implements eingebunden siehe:

.
.
.
_ **class ActionAdapter implements ActionListener** _
{

 private MyContentPane myContent = null;

 public ActionAdapter(JPanel myContentPane)
.
.
.

Warum ist das falsch? Tut mir leid aber das versteh ich jetzt wirklcih nicht. Das implementieren von Interfaces in anonyme Klassen ist mehr als eine gebräuchliche Sache, vor allem bei Threads und GUIs!

http://openbook.galileocomputing.de/javainsel7/javai…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like

Hallo zusammen,

das passt schon so. Ist auch so gewollt :smile:

Danke für deine/eure Hilfe.

Er gibt mir aber nun die Daten zweimal aus.
Wahrscheinlich weil einmal „select“ und einmal „chanced“ ja als Action erkannt wird und er da jeweils die Daten dann ausgibt, was ja stimmt. Einmal selecte ich die ja mit der Maus - und einmal wird in der JCombobox ja die Änderung (Chanced) ausgeführt.

Bin am suchen noch wie ich das wegkrieg

Gruß Rolf

Hallo zusammen,
Er gibt mir aber nun die Daten zweimal aus.
Bin am suchen noch wie ich das wegkrieg

Du kannst noch ein if um deine Abfragen wickeln und
abfragen, ob selektiert wurde:

if (e.getStateChange() == ItemEvent.SELECTED) {
 if (ch1.getSelectedItem().equals("Deutsch")) {
 nationalitaet = "Deutsch";
 }
[...]
 System.out.println("Die Nationalitaet ist " ...
}

Siehe auch:
http://java.sun.com/docs/books/tutorial/uiswing/even…

Gruss
Patrick

Hallo,

doch - das daran hab ich gleich als erstes gedacht. Funktioniert aber leider nicht. Aber hier verdreht sich total.

Muss ich mal nochmal in Ruhe ansehen :smile:

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
doch - das daran hab ich gleich als erstes gedacht.
Funktioniert aber leider nicht. Aber hier verdreht sich total.

Mit dem von Lucifer002 korrigierten Code und dem Zusatz
funktioniert das bei mir einwandfrei.

Gruss
Patrick

du hast ja nicht ganz unrecht aber:

der Aufbau vereinfacht sieht so aus:

class ActionAdapter implements ActionListener
{
 ItemListener ItemSelect = new ItemListener()
 {
 Interface Methoden überschreiben/implementieren
 };

 public void actionPerformed(ActionEvent actionEvent)
 {
 Interface-Methode vom ActionListener überschreiben. 
 }
}

das „new ItemListener()“ generiert ein Objekt das von Object abgeleitet wurde und das Interface ItemListener implementiert. Da dieses Object innerhalb vom ActionAdapter generiert wird, ist es außerhalb des ActionAdapter nicht sichtbar…also „sinnlos“.
Was man machen kann, ist:

public class GrafikTest extends JApplet implements Runnable
{
 ItemListener **itemSelect** = new ItemListener()
 {
 Interface Methoden überschreiben/implementieren
 };
.
.
.
 ch1.addItemListener( **itemSelect** );
.
.
.
}

oder so

public class GrafikTest extends JApplet implements Runnable
{
.
.
.
 ch1.addItemListener(new MyItemListener());
.
.
.
 class MyItemListener implements ItemListener
 {
 public void itemStateChanged(ItemEvent event)
 {
 Interface-Methode vom ItemListener überschreiben. 
 }
 }
.
.
.
}

wenn ich innerhalb einer Klasse ein „new Interface-Name()“ aufrufe implementiert dies Klasse das Interface nicht, sondern es wird immer nur ein Objekt innerhalb der Klasse generiert.

ich hoffe mal das ich es jetzt vielleicht besser erklärt habe auf was ich hinaus wollte mit meinen Kommentar.

@rolf
Keine Großbuchstaben am Anfang von Variablen… :wink:
falsch: ItemSelect…richtig: itemSelect

Moin moin,

ne, seltsam bei mir funtzt es garnicht.
Er gibt mit das Ergebnis immer zweimal aus.

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin
ne, seltsam bei mir funtzt es garnicht.
Er gibt mit das Ergebnis immer zweimal aus.

Poste doch bitte mal den Inhalt der Methode itemStateChanged().
Meine Vermutung, es stimmt was mit der Klammersetzung nicht.
Dazu aus den Java Code Conventions:

Note: if statements always use braces {}. Avoid the following error-prone form: 
if (condition) //AVOID! THIS OMITS THE BRACES {}!
 statement;

http://java.sun.com/docs/codeconv/html/CodeConventio…

Ansonsten hilft es auch, wenn du mit dem Debugger an die Stelle
gehst und direkt schaust, warum der Code nicht das tut was er soll.

Gruss
Patrick

Servus,

hier der Code -->

ItemListener itemSelect = new ItemListener()
{

 public void itemStateChanged(ItemEvent e)
 {
 String nationalitaet = null;
 if (ch1.getSelectedItem().equals("Deutsch"))
 nationalitaet="Deutsch";
 if (ch1.getSelectedItem().equals("Französisch"))
 nationalitaet="Franzoesisch";
 if (ch1.getSelectedItem().equals("Spanisch"))
 nationalitaet="Spanisch";
 if (ch1.getSelectedItem().equals("Italienisch"))
 nationalitaet="Italienisch";
 if (ch1.getSelectedItem().equals("Dänisch"))
 nationalitaet="Daenisch";

 System.out.println("Die Nationalitaet ist "+nationalitaet+".");
 }

};
ch1.addItemListener(itemSelect);

}

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]