Wie findet ihr meinen Vokabeltrainer - Verbesserungsvorschläge?

Diskutiere Wie findet ihr meinen Vokabeltrainer - Verbesserungsvorschläge? im Codeschnipsel u. Projekte Forum; Ist mein erstes Programm https://textuploader.com/1ahbn https://textuploader.com/1ahb2 https://textuploader.com/1ahb7 Den Code könnt ihr bei...

  1. B0hn3
    B0hn3 Mitglied
  2. Vielleicht hilft dir dieses Buch hier weiter.
  3. VfL_Freak
    VfL_Freak Bekanntes Mitglied
    B0hn3 gefällt das.
  4. B0hn3
    B0hn3 Mitglied
    OK, jetzt wo du es sagst, könnte ich den Code auch hier einfügen (es besteht aus drei Klassen):


    Code (Text):
    import java.util.ArrayList;
    import java.util.List;

    import javax.swing.JFrame;

    public class Main {

        public static void main(String[] args) {

            List < Vokabeln> liste = new ArrayList<Vokabeln>();  
           
            liste.add(new Vokabeln("großzügig","generous"));
            liste.add(new Vokabeln("reichlich","abundant"));
            liste.add(new Vokabeln("es vermasseln","to blow it"));
            liste.add(new Vokabeln("nachgiebig","indulgent"));
            liste.add(new Vokabeln("geleiten","to usher"));
            liste.add(new Vokabeln("Meuterei", "mutiny"));
            liste.add(new Vokabeln("direkt/unverblühmt","blunt"));
            liste.add(new Vokabeln("machbar","viable"));
            liste.add(new Vokabeln("Hütte","cottage"));
            liste.add(new Vokabeln("bewerten","to assess"));
            liste.add(new Vokabeln("Beerdigung","burial"));
            liste.add(new Vokabeln("bewerben","to apply"));
            liste.add(new Vokabeln("einstellen","to employ"));
            liste.add(new Vokabeln("Verleumdung","slander"));
            liste.add(new Vokabeln("zwielichtig","shaddy"));
            liste.add(new Vokabeln("Erfurcht einflößen","to awe"));
            liste.add(new Vokabeln("einäschern","to cremate"));
            liste.add(new Vokabeln("robust","sturdy"));
            liste.add(new Vokabeln("Matte","mat"));
            liste.add(new Vokabeln("stur","stubborn"));
            liste.add(new Vokabeln("Frontseite/Fassade","frontage"));
            liste.add(new Vokabeln("fleißig", "diligent"));

            JFrame jf = new Frame (liste);
       
        }
    }

    Code (Text):
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;

    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;

    public class Frame extends JFrame{
       

       
        Font anzeigeSchrift        = new Font("Tahoma", Font.PLAIN, 35);
        Font eingabeSchrift        = new Font("Tahoma", Font.PLAIN, 20);
        Font ergebnisSchrift    = new Font("Tahoma", Font.PLAIN, 20);
       
        JButton wiederholen        = new JButton("Falsche wiederholen");
        JButton go                = new JButton("Go");
       
        JPanel buttonPanel         = new JPanel();
        JPanel panel1             = new JPanel();
        JPanel panel2            = new JPanel();
       
        JLabel neue                = new JLabel("Neue: ");
        JLabel falsche          = new JLabel("Falsch: ");
        JLabel listeNr            = new JLabel();
        JLabel liste2Nr            = new JLabel();
        JLabel anzeige            = new JLabel();
        JLabel ergebnis            = new JLabel();
        JLabel letzteVokabel    = new JLabel();
        JLabel richtigeAntwort    = new JLabel();
       
        JTextField eingabe        = new JTextField();
       
        List <Vokabeln> liste;
        List <Vokabeln> liste2 = new ArrayList<Vokabeln>();  
       
        int nr;
        int nr2 = 0;
        boolean gespeicherte = false;
       
       
       
        Frame(List<Vokabeln> liste)
        {
            this.liste=liste;  
           
            setSize(850,550);
            setResizable(false);
            setVisible(true);
            setLayout(null);
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
            panel1.setBounds(0,0,280,550);
            panel1.setLayout(null);
            panel1.setBackground(Color.BLACK);
            panel1.setVisible(true);
            add(panel1);
           
            panel1.add(ergebnis);
            ergebnis.setBounds(30,150,150,50);
            ergebnis.setFont(ergebnisSchrift);
            ergebnis.setForeground(Color.RED);
           
            panel1.add(letzteVokabel);
            letzteVokabel.setBounds( 30, 200, 150, 50);
            letzteVokabel.setFont(ergebnisSchrift);
            letzteVokabel.setForeground(Color.WHITE);
           
            panel1.add(richtigeAntwort);
            richtigeAntwort.setBounds( 30, 250, 250, 50);
            richtigeAntwort.setFont(ergebnisSchrift);
            richtigeAntwort.setForeground(Color.GREEN);
           
            panel2.setBounds(280,0,600,600);
            panel2.setLayout(null);
            panel2.setBackground(Color.WHITE);
            panel2.setVisible(true);
            add(panel2);
           
            panel2.add(wiederholen);
            wiederholen.setBounds( 175, 496, 175 , 25);
            wiederholen.setBackground(Color.WHITE);
            wiederholen.addActionListener(new WiederListener());
           
            panel2.add(anzeige);
            anzeige.setBounds(50,50,600,200);
            anzeige.setFont(anzeigeSchrift);
           
            panel2.add(eingabe);
            eingabe.setBounds(75, 300, 300, 50);
            eingabe.setFont(eingabeSchrift);
            eingabe.addActionListener(new GoListener());
           
            panel2.add(go);
            go.setBounds(390,300,50,50);
            go.setBackground(Color.WHITE);
            go.addActionListener(new GoListener());
           
            panel2.add(neue);
            neue.setBounds(470,478,50,25);
           
            panel2.add(falsche);
            falsche.setBounds(470,495,50,25);
           
            panel2.add(listeNr);
            listeNr.setBounds(523,478,50,25);
           
            panel2.add(liste2Nr);
            liste2Nr.setBounds(523,495,50,25);
           
            nächsteVokabel();
        }
       
       
        public void nächsteVokabel()
        {
            listeNr.setText(""+liste.size());
            liste2Nr.setText(""+liste2.size());
            eingabe.requestFocus();
            if(liste.size() != 0)
            {
                eingabe.setText("");
                Random würfel = new Random();
                nr=würfel.nextInt(liste.size());
                anzeige.setText(liste.get(nr).eins);
            }  
            else
            {
                eingabe.setVisible(false);
                go.setVisible(false);
                anzeige.setText("Ende");  
            }
        }
       
       
        private class GoListener implements ActionListener
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                if(gespeicherte==false)
                {
                    if(eingabe.getText().equals(liste.get(nr).zwei))
                    {
                        ergebnis.setForeground(Color.WHITE);
                        ergebnis.setText("Richtig!");
                        letzteVokabel.setText("");
                        richtigeAntwort.setText("");
                        liste.remove(nr);
                        nächsteVokabel();
                    }
                    else
                    {
                        ergebnis.setForeground(Color.RED);
                        ergebnis.setText("Falsch!");
                        letzteVokabel.setText(liste.get(nr).eins+":");
                        richtigeAntwort.setText(liste.get(nr).zwei);
                       
                        liste2.add(new Vokabeln(liste.get(nr).eins, liste.get(nr).zwei));
                        liste.remove(nr);
                        nächsteVokabel();
                    }
                }
                else
                {
                    if(eingabe.getText().equals(liste2.get(nr2).zwei))
                    {
                        liste2.remove(nr2);
                        falscheVokabeln();
                        ergebnis.setForeground(Color.WHITE);
                        ergebnis.setText("Richtig!");
                        letzteVokabel.setText("");
                        richtigeAntwort.setText("");
                    }
                    else
                    {  
                        ergebnis.setForeground(Color.RED);
                        ergebnis.setText("Falsch!");
                        richtigeAntwort.setText(liste2.get(nr2).zwei);
                        letzteVokabel.setText(liste2.get(nr2).eins);
                        nr2++;
                        falscheVokabeln();
                    }
                }  
            }
        }
       
       
        private class WiederListener implements ActionListener
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                ergebnis.setText("");
                letzteVokabel.setText("");
                richtigeAntwort.setText("");
                falscheVokabeln();
            }
        }
       
       
        public void falscheVokabeln()
        {  
            listeNr.setText(""+liste.size());
            liste2Nr.setText(""+liste2.size());
           
            eingabe.setText("");
            go.setVisible(true);
            eingabe.setVisible(true);
           
            if(liste2.size()!=0)
            {
                if(nr2==liste2.size())
                    nr2=0;
               
                gespeicherte=true;
                anzeige.setText(liste2.get(nr2).eins);
                eingabe.requestFocus();
            }
            else
            {
                gespeicherte=false;
                nächsteVokabel();
            }
        }
    }
    Code (Text):
    public class Vokabeln
    {

        String eins;
        String zwei;

        Vokabeln(String eins, String zwei){
            this.eins=eins;
            this.zwei=zwei;
        }
    }
     
  5. VfL_Freak
    VfL_Freak Bekanntes Mitglied
    Moin,

    ich habe den Code jetzt nur überflogen (und nicht ausgeführt) !

    Was mir spontan auffiel: vermeide Variablennamen wie
    - nr und nr2
    - panel1 und panel2
    - liste und liste2
    Schon bald weißt Du selbst nicht mehr, was 1 und was 2 sein sollte
    Immer 'sprechende Namen' verwenden!!

    Und bitte was soll ein "WiederListener" sein ???

    VG Klaus
     
    B0hn3 gefällt das.
  6. Robat
    Robat Bekanntes Mitglied
    Hab deinen Code nicht ausprobiert, einfach was mir spontan beim drüber schauen einfällt:
    - beachte das Geheimnisprinzip
    - Gib deinen Variablen sprechendere Namen zB sagen eins und zwei nicht wirklich etwas über dessen Bedeutung aus
    - Du hast momentan 1 Klasse die sich um Logik, tw. Model und View kümmert. Trenne die Klassen lieber auf. Siehe dazu MVC
    - Erbe nicht von JFrame - du willst nur dessen Funktionalität nutzen, sie aber nicht erweitern. Oder würdest du für jeden String eine eigene Klasse erstellen :p
    - Denk generell vielleicht noch mal über die Datenstruktur nach - ist eine Liste wirklich am geeignetsten? Wäre eine Map vielleicht gut?
    - Das null-Layout ist theoretisch verpönt wenn es sich nicht um Spiele handelt. Schau dir vielleicht mal LayoutManager in Java an
    - Kleiner Hinweis, kein Muss: if(gespeicherte==false) oder if(gespeicherte==true) kann man auch als if(!gespeicherte) bzw if(gespeicherte) schreiben

    Generell ist der Code aber für einen Anfänger (ich impliziere mal, dass du einer bist?) schon gut. Da kann man definitiv drauf aufbauen. Es ist auch nicht so, dass alle Hinweise ein absoluter Muss sind - es sind nur meine Gedanken dazu :)
     
    mihe7 und B0hn3 gefällt das.
  7. B0hn3
    B0hn3 Mitglied
  8. Wenn du Java lernen möchtest, empfehlen wir dir dieses Buch hier
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Wie findet ihr meinen Vokabeltrainer - Verbesserungsvorschläge? - Ähnliche Themen

Wo befindet sich ein Punkt?
Wo befindet sich ein Punkt? im Forum Spiele- und Multimedia-Programmierung
Java Programm findet Treiber für mySQL auf Debian-Server nicht?
Java Programm findet Treiber für mySQL auf Debian-Server nicht? im Forum Datenbankprogrammierung
Matcher-Klasse findet match nicht
Matcher-Klasse findet match nicht im Forum Allgemeine Java-Themen
jsoup.select findet keine elemente
jsoup.select findet keine elemente im Forum Java Basics - Anfänger-Themen
Java findet MySQL Driver nach export nicht mehr
Java findet MySQL Driver nach export nicht mehr im Forum Allgemeine Java-Themen
Thema: Wie findet ihr meinen Vokabeltrainer - Verbesserungsvorschläge?