Java Listenwahl

HerrDrachen

Lieutenant
Registriert
Feb. 2016
Beiträge
608
http://www.bilder-upload.eu/show.php?file=a14664-1478282190.png
Wie bekomme ich das hin?
Wie schreibe ich den Quelltext zu diesem Beispiel?
Ich komme leider nicht weiter!

https://www.amazon.de/Java-mit-Ecli...&qid=1478281790&sr=8-3&keywords=java+für+kids

Ich habe dieses Buch, hochladen darf ich es hier glaube ich nicht, oder?
Und ich komme mit diesem Buch einfach nicht weiter, versuche so eine einfache
Listenwahl hinzubekommen, aber ich bekomme es einfach nicht hin -.-

http://www.bilder-upload.eu/show.php?file=0e6b63-1478282599.png
Da steht wie man es machen müsste, aber ich verstehe das nicht.
 
Wo liegt dein Problem?
Der Code steht ja schon in deinem Buch und das lernen der Programmiersprache können wir dir nicht abnehmen.

Ein kleiner Tipp am Rande: ich kann mir nicht vorstellen das dieses Buch auch nur ansatzweise gut ist. ;)
 
Zuletzt bearbeitet:
Richtig, der Code steht schon im Buch, aber wie verwende ich ihn?
Wie baue ich den Code ein?
Wie lautet dann der vollständige Quelltext?

@pmkrefeld
Welches Buch wäre besser?^^

Das ist mein Quelltext bisher:
Aber wie verändere ich ihn, sodass ich aus einer Liste diese Begriffe, Prima, Gut, Mäßig etc auswählen kann?

package paket1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Hallo1
{
public static void main (String[] args)
{
JFrame Rahmen =
new JFrame("Hallo, wie geht es?");
Rahmen.setSize (500,400);
Rahmen.setDefaultCloseOperation
(JFrame.EXIT_ON_CLOSE);
JPanel Platte = new JPanel ();
Platte.setLayout (new GridLayout());
// Buttons erzeugen
JButton Knopf1 = new JButton("Gut");
JButton Knopf2 = new JButton ("Schlecht");
JButton Knopf3 = new JButton ("Scheisse");
JButton Knopf4 = new JButton ("Aljoscha");
// Schriftart und –größe
Knopf1.setFont(new Font("Arial", 1, 20));
Knopf2.setFont(new Font("Arial", 1, 20));
Knopf3.setFont(new Font("Arial", 1, 30));
Knopf4.setFont(new Font("Arial", 1, 25));
// Buttons mit Ereignissen verknüpfen
Knopf1.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent x)
{
JOptionPane.showMessageDialog
(null, "Das freut mich!");
}
});
Knopf2.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent x)
{
JOptionPane.showMessageDialog
(null, "Das tut mir leid!");
}
});
Knopf3.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent x)
{
JOptionPane.showMessageDialog
(null, "Das ist kacke!");
}
});
Knopf4.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent x)
{
JOptionPane.showMessageDialog
(null, "Drögemeier!");
}
});
// Alles einsetzen und sichtbar machen
Platte.add (Knopf1);
Platte.add (Knopf2);
Platte.add (Knopf3);
Platte.add (Knopf4);

Rahmen.setContentPane (Platte);
Rahmen.setVisible (true);
}
}
 
Zuletzt bearbeitet:
Ich habe mir vorerst erlaubt deinen Code zu formatieren, das konnte ja keiner lesen :rolleyes:

Code:
package paket1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Hallo1{

    public static void main (String[] args){
        
        JFrame Rahmen = new JFrame("Hallo, wie geht es?");
        Rahmen.setSize(500,400);
        Rahmen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel Platte = new JPanel ();
        Platte.setLayout (new GridLayout());

         // Buttons erzeugen
        JButton Knopf1 = new JButton("Gut");
        JButton Knopf2 = new JButton ("Schlecht");
        JButton Knopf3 = new JButton ("Scheisse");
        JButton Knopf4 = new JButton ("Aljoscha");

        // Schriftart und –größe
        Knopf1.setFont(new Font("Arial", 1, 20));
        Knopf2.setFont(new Font("Arial", 1, 20));
        Knopf3.setFont(new Font("Arial", 1, 30));
        Knopf4.setFont(new Font("Arial", 1, 25));
        
        // Buttons mit Ereignissen verknüpfen
        Knopf1.addActionListener (new ActionListener(){
           
            public void actionPerformed (ActionEvent x){
                JOptionPane.showMessageDialog(null, "Das freut mich!");
            }
        });
        
        Knopf2.addActionListener (new ActionListener(){
           
            public void actionPerformed (ActionEvent x){
                JOptionPane.showMessageDialog(null, "Das tut mir leid!");
            }
        });
        
        Knopf3.addActionListener (new ActionListener(){
        
            public void actionPerformed (ActionEvent x){
                JOptionPane.showMessageDialog(null, "Das ist kacke!");
            }
        });
        
        Knopf4.addActionListener (new ActionListener(){
        
            public void actionPerformed (ActionEvent x){
       
                JOptionPane.showMessageDialog(null, "Drögemeier!");
            }
        });
        
        // Alles einsetzen und sichtbar machen
        Platte.add (Knopf1);
        Platte.add (Knopf2);
        Platte.add (Knopf3);
        Platte.add (Knopf4);
        
        Rahmen.setContentPane (Platte);
        Rahmen.setVisible (true);
    }
}
Ergänzung ()

Nun zum eigentlichen Problem:

Dein Code stellt eine Liste von 4 Buttons dar, die jeweils beim daraufklicken einen kleinen Dialog aufmachen.
Da die Aufgabe aber scheinbar lautet eine ComboBox mit Daten zu befüllen und diese darzustellen ist ungefähr 90% hiervon überflüssig :)

JButton ist eine der Standardkomponenten von Swing, eine JComboBox übrigens auch, hier findest du eine kompakte Auflistung: Swing Controls

Um besser verstehen zu können wie eine ComboBox funktioniert können wir einerseits die API zur Rate ziehen:
JComboBox API und/oder das dazugehörige Tutorial von Oracle: JComboBox tutorial

Prinzipiell kann man alles in eine ComboBox reinpacken, da dies aber nicht sinnvoll ist und sehr aufwändig wäre gehe ich davon aus dass wir in der ComboBox keine Buttons haben wollen :)

Wir werden die ComboBox einfach ganz klassisch mit Strings befüllen.

Code:
import javax.swing.*;

public class ComboBoxExample {

    public static void main(String[] args) {
        new ComboBoxExample();
    }

    public ComboBoxExample() {

        //Option 1: item list as constructor parameter

        String[] items = new String[] {"Spring", "Summer", "Fall", "Winter"};
        JComboBox comboBox = new JComboBox(items);
        showInFrame(comboBox);

        //Option 2: add items to the combobox afterwards using provided methods

        JComboBox otherComboBox = new JComboBox();
        otherComboBox.addItem("Red");
        otherComboBox.addItem("Green");
        otherComboBox.addItem("Blue");
        showInFrame(otherComboBox);
    }

    public static void showInFrame(JComponent component) {
        JFrame frame = new JFrame();
        frame.setSize(200, 70);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(component);
        frame.setVisible(true);
    }
}

@Hinweis: Beide Fenster liegen initial übereinander :P

Hier noch ein paar Tipps:

1. Programmieren und Lernmaterial IMMER auf englisch

Wenn du es auf Deutsch tust musst du dich mit 3 statt 2 Sprachen beschäftigen, abgesehen davon sind die besten Hilfeartikel, APIs, Blogs, Hilfeseiten(StackOverflow), Bücher usw. usf. alle auf englisch. (Und es gibt keine Buchpreisbindung auf englische Bücher :D )

2. Solange du die Sprache nicht beherrschst solltest du die Finger von jeglichen Benutzerinterfaces lassen.

Solche Bsp. werden gerne verwendet um schnelle "Lernerfolge" zu erzielen, sind aber beim erlernen der Sprache einfach nur hinderlich.
In deinem Beispiel oben gibt es eine Unmenge an Konfiguration die 'nötig' ist um effektiv 4 Schaltflächen darzustellen, gelernt hat man dabei kaum etwas.
Auch in meinem Bsp. bezieht sich der meiste Code auf das Uralt-Framework "Swing", das jetzt noch zu erlernen obwohl der Nachfolger (JavaFX) seit 5 Jahren verfügbar ist macht mMn. keinen Sinn.

Versuche vllt mal folgendes: http://codingbat.com/java
Hier gibt es Aufgaben die sich vor allem auf Grundlagen beziehen, wenn du nicht weiter weißt ist Google dein bester Freund.
 
Zuletzt bearbeitet:
^^ ja danke dir!

Wenn ihr den Quelltext in java eingebt und ausgebt werden ihr schon sehen was dann kommt.
Und jetzt muss noch eingebaut werden, dass man halt aus einer Liste, bestimme Begriffe auswählen kann,
dann ist das Problem -.-
 
Im Bsp. oben kannst du sehr wohl etwas aus der Liste auswählen.
Wenn du darauf hinaus willst dass nach dem auswälen 'nichts' passiert, das ist schon richtig so :D

Zwecks Proof-of-Concept können wir das obige Beispiel natürlich etwas erweitern und auf die Auswahl sofort reagieren.
Swing verwendet hierzu das Observer-Pattern (alternativ Listener-Pattern), für uns heißt das:

1. Wir müssen einen Listener implementieren:

einfache Variante Mithilfe einer anonymen Klasse, die ComboBox muss sich im gleichen Scope befinden:
Code:
        ActionListener someActionListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, comboBox.getSelectedItem());
            }
        };

2. diesen in der ComboBox anmelden:
Code:
        comboBox.addActionListener(someActionListener);

Insgesamt sieht das dann so aus:
Code:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ComboBoxExample {

    public static void main(String[] args) {
        new ComboBoxExample();
    }

    public ComboBoxExample() {

        String[] items = new String[] {"Spring", "Summer", "Fall", "Winter"};
        JComboBox comboBox = new JComboBox(items);

        ActionListener someActionListener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, comboBox.getSelectedItem());
            }
        };
        comboBox.addActionListener(someActionListener);

        showInFrame(comboBox);
    }

    public static void showInFrame(JComponent component) {
        JFrame frame = new JFrame();
        frame.setSize(200, 70);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(component);
        frame.setVisible(true);
    }

}

@Edit: lol Beitrag No.1999 :D
 
Zuletzt bearbeitet:
Ja, danke! Das hilft mir wenigstens einen Schritt weiter!

Aber wie baue ich es ein, dass, wenn ich z.B. auf Spring klicke, dass dann eine andere Message kommt.

Wie baue ich es ein, dass wenn ich auf "Spring" klicke, dass dann die Meldung "Es ist Frühling" ausgegeben wird?
 
Die einfachste Variante wäre, die englischen durch deutsche Wörter zu ersetzen und den String "Es ist " vor das ausgewählte Item zu setzen. Strings kannst du mit dem +-Operator verbinden.
 
Du verstehst was nicht?
Englisch? "String"? Was der+-Operator ist?
Weist du, an welcher Stelle in pmkrefelds Code der MessageDialog angezeigt wird?
 
Sry, ich bin überfordert.

Ich bekomm das einfach nicht hin, dass wenn ich auf "Spring" klicke, dass dann "Es ist Frühling ausgeben wird".
Ich weiss nicht was ich an welcher Stelle schreiben muss.

In meinem Code ganz oben hab ich es geschafft, dass eine Message beim anklicken eines Begriffes angezeigt wird, aber ich bekomme das im Code von pmkrefeld einfach nicht eingebaut.
 
Zuletzt bearbeitet:
D.h. du hast keinen Plan was der Code, den du gerade kopiert hast, überhaupt macht? Wenn ich dir jetzt sage, wie du die Ausgabe hinbekommen kannst, hast du zwar ein Erfolgserlebnis, wirst bei der nächsten Aufgabe aber wieder dumm aus der Wäsche schauen, da du nichts gelernt hast. Du kannst genau so gut einen Programmierer anheuern, der für dich programmiert.

Oder du lernst erst mal richtig Java (ich glaub hier gibt es immer noch den angepinnten Thread mit weiterführenden Informationen). Lern die Grundlagen der Programmierung, z.B. was eine Stringkonkatenation ist (klingt komplizierter als es ist).
 
Ich will Java richtig lernen!

Ich verstehe den Code nicht, leider nein.

Wo steht, was die einzelnen Befehle bedeuten?
Gaaaanz einfach erklärt?
 
Zuletzt bearbeitet:
Und wie stellt du dir vor, Java zu lernen? Code abschreiben funktioniert offenbar nicht. Im hier angepinnten Thread gibt es kostenlose Lektüre zu Java, da dürften mehr Informationen drin stehen, als in deinem Buch.

Ich kann dir gerne weiterhelfen, aber mit Problembeschreibungen wie "geht nicht" und "weis nicht" ist das recht schwer. Zudem antwortest du mir auch nicht auf meine Fragen.

Sehe gerade deine Änderung. Wenn du den Code von pmkrefeld nich verstehst, lass es. Arbeite an deinem Code. Verstehe deinen Code.
Die Anzeige der MessageBox hast du ja geschafft. Wenn du verstehst, wie diese Box funktioniert (und Stringkonkatenation), solltest du wenig Probleme haben, den Text zu verändern.
 
Wie gesagt, da du anscheinend Java nicht beherrscht (nicht weiter schlimm) solltest du die Finger von jeglichen Benutzeroberflächen lassen und mit einfachen Kommandozeilenausgaben anfangen.

Im Code oben gibt es viele Konzepte die für einen Anfänger einfach zu viel sind, obwohl das Beispiel so kurz ist arbeiten wir darin bereits mit 2 Frameworks (AWT, Swing) und einigen Fortgeschrittenen Konzepten (Anonyme Klassen, Listener-Pattern) ich denke auch dass auf deinem Niveau auch die Main-Methode nach Kauderwelsch ausschaut.

Wenn ich dir eine Reihenfolge vorgeben darf:
- primitive Datentypen (int, long, float, double, boolean, char), welche Daten sie halten und welche Operationen auf Ihnen ausgeführt werden
- logische (&&, ||) und binäre Operatoren (&, |, >, <, <<, >>).
- trinärer Operator ?.
- if Bedingung
- Arrays
- Listen
- Maps
- for und for-each Schleifen
- Klassen
- Sichtbarkeit (public, private, protected)
- Modifikatoren (static, final)
- Interfaces
- Kapselung
- Vererbung
- Composition over Inheritance
- Optional noch generics und lambda-Expressions (Fortgeschritten)

Wenn du diese Grundlagen drauf hast, dann und erst dann kannst du sinnvoll kleine Programme schreiben.
Halte durch, die Welt braucht programmierrer :):daumen:
 
Schon mal die einzelnen Begriffe bei google eingegeben? Da stehen oft mehr Informationen drin als in einem Buch.
 
puuuh wie schreibe ich denn nen eigenen Code?

Kennt jemand nen Link der wirklich bei 0 Anfängt?

Wo alles Schritt für Schritt erklärt wird?

Mit den Links die hier im Thread genannt wurden, kann ich nicht viel anfangen.
Viel zu schwer.
 
http://openbook.rheinwerk-verlag.de/javainsel/

Hier hast du das Standardwerk was Java angeht, erstmal geht es darum die Sprache und die Konzepte kennezulernen, nicht darum ein paar hübsche Benutzeroberflächen zusammenzuklicken.

Dort findest du alle Punkte erklärt die ich angesprochen habe, wenn du erst einmal soweit bist wirst viele Aufgaben und Bsp. viel besser verstehen können und kommst so weiter. Ohne diese Grundlagen einfach "nen eigenen Code schreiben" ist meiner Meinung nach nicht möglich.
 
Zurück
Oben