Java-Frage (Choice & Button-Kombination)

Sebastian132

Admiral Special
Mitglied seit
29.06.2002
Beiträge
1.354
Renomée
0
Hallo, wenn ein bestimmter Menüpunkt ausgewählt ist, und der Knopf gedrückt wird, soll eine Aktion erfolgen (in diesem Fall einfach mal "Test" in der Konsole ausgegeben werden). Aber es läuft nicht, der Compiler meldet "Class Wahlhoerer not found".

Einzeln (nur Button / nur Choice) geht es. Wer kann mir helfen?



Code:
/*
	Trivial applet that displays a string
*/

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;





public class TrivialApplet extends Applet
{
	
	Button t1;
	
	Choice Wahl;
	
	TextArea t_ausgabe;

	
	
	
	[b]
	class Lauscher implements ActionListener {
	public void actionPerformed(ActionEvent e){
	
	
	class Wahlhoerer implements ItemListener {
	public void  itemStateChanged(ItemEvent e){
	
	
	
	if (Wahl.getSelectedItem().equals("Auswahlsortierung"))
	System.out.println("TEST");


	
}}
}}
[/b]


	
	
	public void init() {
	
	
	Wahl=new Choice();
	
	t1=new Button("Erzeugen");
	
	
	t_ausgabe=new TextArea(10,40);
	
	add(t1);
	
	
	add(Wahl);
	add(t_ausgabe);
	
	Wahl.add("Auswahlsortierung");
	Wahl.add("Bubblesortierung");
	Wahl.add("Sortieren durch Einfügen");
	
	[b]Wahl.addItemListener(new Wahlhoerer());
	t1.addActionListener(new Lauscher());
	[/b]
	
	
	
	
	}
	
	
	}
 
Versuch das mal. Bei dir war die Wahlhoerer-Klasse innerhalb der actionPerformed-Methode der Lauscher-Klasse definiert, das geht so nicht ;)

Code:
class Lauscher implements ActionListener {
    public void actionPerformed(ActionEvent e){
    }
}

class Wahlhoerer implements ItemListener {
    public void  itemStateChanged(ItemEvent e){
        if (Wahl.getSelectedItem().equals("Auswahlsortierung"))
            System.out.println("TEST");	
    }
}
 
Hm naja, aber dann ist ja der Knopf leider arbeitslos.

Ich wollte es ja so machen:

Wenn das selected Item "xyz" ist (also das aktuell im Choicemenü eingestellte) UND man den Knopf drückt, passiert das und das.

So wie Du es vergeschlagen hast, würde das Ereignis allein schon durch Anklicken des Items im Choicemenü ausgelöst werden, ohne das dazu der Knopf gedrückt werden muss. Ich hoffe es ist verständlich ausgedrückt, wie ich es meine...
 
Original geschrieben von Sebastian132
Hm naja, aber dann ist ja der Knopf leider arbeitslos.

Ich wollte es ja so machen:

Wenn das selected Item "xyz" ist (also das aktuell im Choicemenü eingestellte) UND man den Knopf drückt, passiert das und das.
Der Knopf war vorher auch arbeitslos, das hab ich nicht geändert ;)

Lass den ItemListener einfach ganz weg und pack die if-Anweisung aus der itemStateChanged-Methode in die actionPerformed-Methode, dann sollte das Programm eigentlich tun was du willst.

Und wenn du jetzt mit Java anfängst, solltest du dir vielleicht eher Swing anschauen anstelle des AWT, da dieses nun doch schon etwas veraltet ist.
 
Danke ihr beiden, ich dachte ich müsste da noch den ItemListener drin haben, geht aber auch nur mit der if-Anweisung.

Das mit Swing ist so ein Problem, das Programm ist für den Informatikunterricht in der Schule.

Einmal kam ich dem Lehrer mit einem Programm mit einem Swing-Objekt (jSlider) an...und es ging nicht, weil dort ein total veraltetes SDK drauf ist, und er nicht weiß wie man ein neues installiert (ich weiß es auch nicht, Mac OSx).

Natrlich hatte ich die swing-Klassen auch importiert, ging trotzdem nicht, deshalb ist das mit Swing etwas problematisch.
 
Kein Problem ;)

Den ItemListener brauchst du nur dann, wenn du direkt auf das Anklicken des Items reagieren willst.
 
Zurück
Oben Unten