PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java-Frage (Choice & Button-Kombination)



Sebastian132
06.05.2004, 19:37
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?




/*
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;





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");



}}
}}





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");

Wahl.addItemListener(new Wahlhoerer());
t1.addActionListener(new Lauscher());





}


}

sfhawk
06.05.2004, 20:21
Versuch das mal. Bei dir war die Wahlhoerer-Klasse innerhalb der actionPerformed-Methode der Lauscher-Klasse definiert, das geht so nicht ;)


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");
}
}

Sebastian132
06.05.2004, 21:09
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...

Hannnibal
06.05.2004, 21:16
Moin,
knöpfe und co.
http://www.techfak.uni-bielefeld.de/~jkrueger/documents/talks/swing_kompakt.pdf
allerdings für java swing :), die ereignis steuerung ist aber awt...
mfg

sfhawk
06.05.2004, 21:17
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.

Sebastian132
06.05.2004, 21:24
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.

sfhawk
06.05.2004, 21:27
Kein Problem ;)

Den ItemListener brauchst du nur dann, wenn du direkt auf das Anklicken des Items reagieren willst.