Hilfe bei EventListening

Status
Nicht offen für weitere Antworten.

Johnny990

Mitglied
Also ich hab zwar schon mal mein Problem erklärt, aber nur sehr schwammig! versuchs mal genauer zu beschreiben...

(Wär echt sehr dringend die benötigte Hilfe)

Ich hab folgendes Applet(führt es ruhig mal aus damit ihr auch wisst was ich meine:

Code:
import java.applet.*;
import java.awt.event.*;
import java.awt.*;

public class Umfrageversuch1 extends Applet implements ItemListener
{
 //Dies ist die klasse die altersstartwerte beinhaltet
//MannFrau in = new MannFrau();
  // ERSCHAFFUNG DER KOMPONENTEN
  
     //Choice Boxen
    Choice c1 = new Choice();  //Mann oder frau
    Choice c2 = new Choice();   //Ja oder nein frage 1(übergweichtig?)
    Choice c3 = new Choice(); //Ja oder nein frage 2 (fettarmes essen)
    Choice c4 = new Choice();
    //Labels
    Label l0 = new Label ("Sind Sie ein Mann oder eine Frau ?");
    Label l1 = new Label("Waren/Sind Sie übergewichtig ? ");
    Label l2 = new Label("Essen Sie täglich möglichst fettarm ?");
    Label l3 = new Label ("Bewegen Sie sich dreimal pro Woche ?");
    
    //Panels für Fragenumrahmung
    Panel p0 = new Panel();
    Panel p1 = new Panel();
    Panel p2 = new Panel();//Frage fettarm
    Panel p3 = new Panel(); // Frage bewegung
    
    //Textfield
    TextField tf1 = new TextField();
 //--------------------------------------------------------------------------------------------------
    //Initialsierungen des Applets
  public void init()
  {
   //Hintergrund
   setBackground(Color.lightGray);
   p0.setBackground(Color.red);
   p1.setBackground(Color.orange);
   p2.setBackground(Color.orange);
   p3.setBackground(Color.orange);
   setLayout(null);
   //--------------------- Initialsierungen im Applet von Komponenten
     //Auswahl zwischen männlich und weiblich
   c1.addItem(" ");
   c1.addItem("Mann");
   c1.addItem("Frau");
   c1.setBounds(300,5,200,60);
   c1.addItemListener(this);
   add(c1);
   
   //Auswahl (CHOICE) ja oder nein für Frage zu übergewicht
   c2.addItem("");
   c2.addItem("Ja");
   c2.addItem("Nein");
   c2.setBounds(350,100,100,30);
   add(c2);
   
   //Auswahl ja oder nein zu Frage fettarm
   c3.addItem(" ");
   c3.addItem("Ja");
   c3.addItem("Nein");
   c3.setBounds(350,140,100,30);
   add(c3);
   
   //Auswahl ja oder nein zu Frage bewegung
   c4.addItem(" ");
   c4.addItem("Ja");
   c4.addItem("Nein");
   c4.setBounds(350,180,100,30);
   add(c4);
   
   //-----------FRAGEN-----------------------------------------------------------
   //Frage 1 ob Mann oder Frau
   p0.setBounds(5,5,250,30);
   p0.add(l0);
   add(p0);
   //--- 1. frage--mit übergewicht
   p1.setBounds(0,100,250,30);
   p1.add(l1);
   add(p1);
   
     //--Frage 2--fettwarmes essen
     p2.setBounds (0,140,250,30);
     p2.add(l2);
     add(p2);
     
     //Frage 3 -- bewegung
     p3.setBounds(0,180,250,30);
     p3.add(l3);
     add(p3);
   
   
   
   // Textfield add()
   tf1.setBounds(350,400,200,30);
   add(tf1);
   
  }
  
  //Action Listening
  public void itemStateChanged(ItemEvent i)
  {
     if(i.getItem().equals("Mann"))
       setBackground(Color.blue);

       // Wie gehts hier weiter?????????????????????????????????????????????? Bitte Code! Vielen vielen Dank

  }
}


So und nun zum Problem:

ich will so ne Art Altersrechner programmieren, der ausgibt wie alt man (laut statistik ) wird.

Von bedeutung ist hier ob die person männlich oder weiblich ist....

Also angenommen ich wähle "Mann" dann muss ich ja andere Berechnungen bei den nachfolgenden Fragen anstellen als bei frauen.

Die erste frage lautet zB.: Sind oder waren sie übergewichtig? Wenn der mann Ja wählt werden ihm von seinem Durchschnittsalter(--> 77,73 Jahre) zwei JAhre abgezogen!

Nun, wie bring ich das am simpelsten zusammen, dass wenn "Mann" gewählt wurde, dass jeweils bei den entsprechenden Antworten zu den fragen (in denChoice boxen) entweder jahre hinzugezählt oder abgezogen werden???Und wie mach ich das , dass zum schluss das Alter in dem textfield ausgegeben wird???
und wie sprech ich genau die Choice Komponete( in meinem fall c1 und c2) an das zu der Frage gehört?

(ich hab jetzt hier nur mal eine Frage! Der test setzt sich natürlich aus etlichen mehr fragen zusammen!)

Bitte helft mir!!! :)
 

Marco13

Top Contributor
Hmja. Wenn du das jetzt so weitermachst, wie bisher (mit mehr Fragen) dann hast du irgendwann solchen Code wie
Code:
    Choice c1 = new Choice();  //Mann oder frau
    Choice c2 = new Choice();   //Ja oder nein frage 1(übergweichtig?)
    ...
    ...
    ...
    ...
    ...
    Choice c42 = new Choice();  // Bist du Programmierer? Wenn "ja", 10 Jahre abziehen
Und das ist häßlich. Abgesehen davon kommst du in Teufels Küche, wenn du mit dem Layout durcheinaderkommst: Wenn du irgendwann nichtmehr weißt, für welches Panel du welche Bounds angeben mußt, damit es neben der gewünschten Choice erscheint.

Wie genau der Ablauf sein soll und so hast du jetzt auch noch nicht gesagt, und über die Struktur des ganzen könnte man sich bestimmt lange Gedanken machen. Ohne jetzt den kompletten abstraktions-Overkill propagieren zu wollen - vielleicht kannst du ja sowas machen wie

Code:
    private float predictedAge = -1;

    void init()
    {
        predictedAge = 77.73f;
        setLayout(new GridLayout(0,1));

        add(createChoice("Mann oder Frau?", new String[]{"Mann", "Frau"}, new float[]{-5, 0}));
        add(createChoice("Fettes Essen?", new String[]{"Ja", "Nein"}, new float[]{-3, 0}));
        add(createChoice("Hobbies", new String[]{"Sport", "Essen", "Schlafen"}, new float[]{-25, -10, -3}));
    }

    private Component createChoice(String title, final String choices[], final float changes[])
    {
        Panel panel = new Panel(new GridLayout(1,2);
        panel.setBackground(Color.orange);
        panel.add(new JLabel(title));

        final Choice choice = new Choice();
        choice.add(" ");
        for (int i=0; i<choices.length; i++)
        {
            choice.add(choices[i]);
        }
        choice.addItemListener(new ItemListener()
        {
            public void itemStateChanged(ItemEvent event)
            {
                if (event.getStateChange() == ItemEvent.SELECTED)
                {
                    int index = choice.getSelectedIndex();
                    if (index >= 1)
                    {
                        predictedAge += changes[index-1];
                    }
                }
            }
        });
        panel.add(choice);
        return panel;
    } 
}

Nur sinngemäß - es geht darum, dass du dann mit EINER einzigen(!) Zeile eine neue Frage hinzufügen kannst. In der ItemStateChanged-Methode der (anonymen) Listener kannst du dann jeweils ein TextField mit dem Alter updaten, oder das am Ende machen.

Das ist jetzt natürlich noch nicht sauber - wenn man z.B. mehrmals etwas wählt, wird mehrmals etwas vom Alter abgezogen usw, aber das kann man noch ausbauen. Man sollte aber solchen Spagehtti-Code vermeiden, der sich schon bei den ersten 4 Fragen abgezeichnet hat....

P.S.: Ich würde dir empfehlen, nicht AWT sondern Swing zu verwenden.
http://java.sun.com/docs/books/tutorial/uiswing/
 

Campino

Top Contributor
Marco13: das ist durchaus richtig, aber bringt ihn nur bedingt weiter...

Eine Choice-Box spricht man natürlich über ihren Namen an, also c1 mit c1 usw. Im ItemState-Listener kannst du über ItemEvent.getSource() abfragen, von welcher Box das Event kommt. Einfach die Rückgabe dieser Funktion mit der equals-Funktion mit den Boxen vergleichen.

Etwas in einem TextField ausgeben natürlich mit der setText()-Methode des TextFields.

Ansonsten würde ich eine double oder float-Variable (da Kommazahl) für das Alter anlegen und da dann immer was abziehen.

Ich hoffe das hilft dir,
campino
 

Marco13

Top Contributor
Ob es ihn weiter bringt oder nicht, hat er ja bisher noch nicht gesagt :roll:

Aber bei 40 ComboBoxen (oder so) für jede eine Klassenvariable anzulegen, die dann einzeln per Hand zu befüllen und per Hand irgendwo zu platzieren, um dann im ItemListener alle einzeln mit if(...equals) abzufragen ist imho einfach nur schlecht. Wenn die wenigstens (!) in einem Array liegen würden, OK. Aber ... was spricht denn gegen die Lösung, die ich vorgeschlagen hatte? War nur sinngemäß, und könnte man noch schöner machen, aber damit hat man die ganze Verwaltung einer Frage mit allen Auswahlmöglichkeiten und Alters-Abzügen in EINER Zeile - das ist praktisch, leicht wartbar, leicht erweiterbar... (Ich bin ja für Gegenarguemnte offen :D mit selbst fällt aber gerade keins ein :roll: )
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ironfighter Ich brauche hilfe mit Kollisionen AWT, Swing, JavaFX & SWT 1
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
JavaBeginner22 Button Hilfe AWT, Swing, JavaFX & SWT 0
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
senol JOptionPane hilfe!!! :(((( AWT, Swing, JavaFX & SWT 32
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
F BorderLayout Hilfe bei Anzeige AWT, Swing, JavaFX & SWT 2
J Hilfe beim tablevies AWT, Swing, JavaFX & SWT 2
T Swing Hilfe - Selbst Informatik Lehrer konnte mir nicht weiter Helfen AWT, Swing, JavaFX & SWT 2
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
A Swing TicTacToe-Bitte um Hilfe AWT, Swing, JavaFX & SWT 32
T Bitte um Hilfe AWT, Swing, JavaFX & SWT 2
T Hilfe bei Code AWT, Swing, JavaFX & SWT 2
S Hilfe bei Java Gui Anfänger AWT, Swing, JavaFX & SWT 5
J Warum geht das nicht? if-else usw..... compilieren geht nicht -- HILFE!!! AWT, Swing, JavaFX & SWT 10
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
T Hilfe was mus ich tun um das fertige JfxFenster zu sehen AWT, Swing, JavaFX & SWT 2
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
A hilfe für flowlayout AWT, Swing, JavaFX & SWT 6
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
C Gesucht: Hilfe beim programmieren. AWT, Swing, JavaFX & SWT 1
V Swing Brauche Hilfe mit Label AWT, Swing, JavaFX & SWT 3
C Hilfe beim programmieren mit studiumgebundenes Projekt AWT, Swing, JavaFX & SWT 1
T Swing JTable Zeile mit ausgelesenen Werten mit Hilfe von einem Button hinzufügen AWT, Swing, JavaFX & SWT 1
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
H Swing Hilfe bei GUI AWT, Swing, JavaFX & SWT 4
T HILFE wie lösche ich gezeichnetes per tastendruck AWT, Swing, JavaFX & SWT 1
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
Tausendsassa ImageIcon?! Hilfe! AWT, Swing, JavaFX & SWT 10
C Hilfe bei JSpinner und JList AWT, Swing, JavaFX & SWT 1
J GridBagLayout mit Hilfe einer For-Schleife befüllen AWT, Swing, JavaFX & SWT 1
M Hilfe bei Performanceverbesserung AWT, Swing, JavaFX & SWT 34
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
M SwingWorker Hilfe! AWT, Swing, JavaFX & SWT 10
K Swing Brauche Hilfe AWT, Swing, JavaFX & SWT 6
O AWT Performance und Bug behebung[brauche Hilfe] AWT, Swing, JavaFX & SWT 2
K Swing Konsolen Programm in GUI - Suche Hilfe bei Konsolenausgabe AWT, Swing, JavaFX & SWT 2
K Viele Textfield mit Hilfe eines MousListener leeren - möglich? AWT, Swing, JavaFX & SWT 8
I ausgewählte Zeile mit Hilfe der Tastatur löschen! AWT, Swing, JavaFX & SWT 3
Kenan89 Java FX GUI Hilfe für erste Java FX App AWT, Swing, JavaFX & SWT 8
B Rechteck Mit Hilfe Von Timeline, KeyFrames animieren AWT, Swing, JavaFX & SWT 3
J LayoutManager Hilfe bei Wahl des Layouts AWT, Swing, JavaFX & SWT 9
F Hilfe beim ausschalten von Robot AWT, Swing, JavaFX & SWT 7
N Hilfe bei Memory-Spiel AWT, Swing, JavaFX & SWT 18
L Swing Hilfe bei JTabelModel gesucht AWT, Swing, JavaFX & SWT 4
B Hilfe zu JTable und JTabbedPane AWT, Swing, JavaFX & SWT 18
K Hilfe bei Labels AWT, Swing, JavaFX & SWT 3
S Hilfe beim Lernprozess von java3d AWT, Swing, JavaFX & SWT 20
T JLayeredPanel - Hilfe AWT, Swing, JavaFX & SWT 7
C Swing Hilfe bei umsetzung eines Stundenplans. AWT, Swing, JavaFX & SWT 7
K Swing Hilfe beim JTree! AWT, Swing, JavaFX & SWT 3
N Hilfe bei Panels! AWT, Swing, JavaFX & SWT 11
F Swing Syntaxhighlighting Hilfe AWT, Swing, JavaFX & SWT 5
Jats Bitte um Hilfe bei JComboBox mit Array AWT, Swing, JavaFX & SWT 6
Jats Hilfe bei FocusListener für Taschenrechner AWT, Swing, JavaFX & SWT 4
N Swing nach Fensterrand Action ausführen? HILFE AWT, Swing, JavaFX & SWT 7
R Hilfe bei Bachelorrabeit. Seitenvorschau AWT, Swing, JavaFX & SWT 7
L Mein Kopf dreht sich... Brauche Hilfe beim GUI gestalten AWT, Swing, JavaFX & SWT 10
G Swing Hilfe-Fenster erstellen AWT, Swing, JavaFX & SWT 20
E LayoutManager Hilfe ein GridbagLayout!! AWT, Swing, JavaFX & SWT 7
K GUI-Hilfe für Anfänger AWT, Swing, JavaFX & SWT 15
J Schulprojekt und braucht hilfe AWT, Swing, JavaFX & SWT 54
G Hilfe! Command Pattern an easy ImageViewer? AWT, Swing, JavaFX & SWT 13
radiac Hilfe bei GUI AWT, Swing, JavaFX & SWT 22
N Hilfe bei erstellen eines Bibliotheksprogrammes AWT, Swing, JavaFX & SWT 15
H Swing Jtable wird nicht angezeigt..hilfe!! AWT, Swing, JavaFX & SWT 16
M DRINGEND HILFE TextPane RECHTSBÜNDIG AWT, Swing, JavaFX & SWT 2
B Swing Hilfe zu JTextField AWT, Swing, JavaFX & SWT 2
J Brauche ganz dringend Hilfe!!! AWT, Swing, JavaFX & SWT 5
V Bitte um Hilfe bei nem Taschenrechner AWT, Swing, JavaFX & SWT 8
F NullPointerException - HILFE!! AWT, Swing, JavaFX & SWT 20
G Hilfe!!!Sudoku AWT, Swing, JavaFX & SWT 19
M Swing JButton hilfe AWT, Swing, JavaFX & SWT 3
M brauche Hilfe um Einträge aus Jlist zu löschen AWT, Swing, JavaFX & SWT 4
Spin Hilfe - Erklärungsbedarf für Kreis AWT, Swing, JavaFX & SWT 5
O Bitte um Hilfe bei ComboBox in TableHeader AWT, Swing, JavaFX & SWT 9
M Erstellen eines Hilfe-Fenster bzw"Erste-Schritte" AWT, Swing, JavaFX & SWT 2
G Hilfe beim Erstellen eines eigenen Html-Editors! AWT, Swing, JavaFX & SWT 4
G Hilfe Meine JPanels verschwinden im Müll AWT, Swing, JavaFX & SWT 10
G Hilfe AWT, Swing, JavaFX & SWT 8
N ausrichtung Button - hilfe bitte AWT, Swing, JavaFX & SWT 2
T Hilfe zu Events? AWT, Swing, JavaFX & SWT 6
A Ini Datei Auswerten - HILFE! AWT, Swing, JavaFX & SWT 6
D Hilfe bei GUI-Elementen in Java AWT, Swing, JavaFX & SWT 9
D Grafikeinsteiger sucht/braucht Hilfe. Wäre Nett ! AWT, Swing, JavaFX & SWT 3
K Mein Informatikprojekt läuft aus dem Ruder Hilfe. F1 ^^ AWT, Swing, JavaFX & SWT 5
S Hilfe! Bekomme Daten nicht ausgelesen AWT, Swing, JavaFX & SWT 3
M hilfe! probleme mit meinem programm AWT, Swing, JavaFX & SWT 5
V Hilfe :( bekomme textarea nicht versetzt AWT, Swing, JavaFX & SWT 2
M Hilfe ich komme nicht an ein JTextArea AWT, Swing, JavaFX & SWT 4
J Hilfe CardLayout AWT, Swing, JavaFX & SWT 3
C Hilfe bei JInternalFrame AWT, Swing, JavaFX & SWT 6
G BubbleSort mit Hilfe einer Balkengrafik visualisieren AWT, Swing, JavaFX & SWT 9
G Leider trotz allem kein Icon :( Brauche Hilfe AWT, Swing, JavaFX & SWT 3
S sinuskurve hilfe! AWT, Swing, JavaFX & SWT 2
D JSplittPane - unsichtbarer Rahmen? hilfe ;) AWT, Swing, JavaFX & SWT 2
G Selbstprogrammierter Editor - brauche Hilfe AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben