Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 19.13 KB | None | 0 0
  1.  
  2. import java.awt.Color;
  3. import java.awt.Dimension;
  4. import java.awt.FlowLayout;
  5. import java.awt.GridLayout;
  6. import java.awt.event.ActionEvent;
  7. import javax.swing.*;
  8. import javax.swing.JFrame;
  9. import java.awt.event.ActionListener;
  10. import java.sql.Statement;
  11. import java.util.ArrayList;
  12. import java.util.Arrays;
  13. import java.util.Collections;
  14. import java.util.List;
  15.  
  16. public class GUI extends JFrame {
  17.     //<editor-fold defaultstate="collapsed">
  18.     private String gebruikersnaam;
  19.     private Quiz qz;
  20.     private Vraag[] array;//array van vragen
  21.     private Gebruiker user;
  22.     private int countertoonVraag;
  23.     private DatabaseCon dbiQuiz;
  24.     private Statement s;
  25.     private ArrayList<Integer> fouteAntwoorden = new ArrayList<Integer>();
  26.     private ArrayList<Integer> correcteAntwoorden = new ArrayList<Integer>();
  27. //een panel declareren voor de methoden (logIn(), quizConfiguratie())
  28.     private JPanel JpQuizConfiguratie;
  29.     private JPanel JpLogin;
  30.     private JPanel JpMeerkeuze;
  31.     private JPanel JpGoedFout;
  32.     private JPanel JpResultaat;
  33. //alle interface objecten voor het JPanel van de methode logIn()
  34.     private JButton btnSpelen;//login
  35.     private JButton btnGast;//login
  36.     private JLabel lbliQuiz;//login
  37.     private JTextField txtUsername;//login
  38.     private JTextField txtPass;//login
  39. //alle interface objecten voor het JPanel van de methode quizConfiguratie()
  40.     private JLabel lblLeeg;
  41.     private JToggleButton tbtnGoedFout;
  42.     private JToggleButton tbtnMeerkeuze;
  43.     private JToggleButton tbtnBeeldvraag;
  44.     private JButton btnStart;
  45.     private JSpinner sprVragenCounter;
  46. //objecten van de panel meerkeuzevraag declareren
  47.     private JTextArea txtVraagzinMK;
  48.     private JToggleButton tbtnKeuze1;
  49.     private JTextField txtKeuze1;
  50.     private JToggleButton tbtnKeuze2;
  51.     private JTextField txtKeuze2;
  52.     private JToggleButton tbtnKeuze3;
  53.     private JTextField txtKeuze3;
  54.     private JToggleButton tbtnKeuze4;
  55.     private JTextField txtKeuze4;
  56. //de objecten van goedfout declareren
  57.     private JToggleButton tbtnGoed;
  58.     private JToggleButton tbtnFout;
  59.     private JTextArea txtVraagzinGF;
  60. //alle elementen van het score panel
  61.     private javax.swing.JList foutiefList;
  62.     private javax.swing.JList correctList;
  63.     private javax.swing.JButton nietOpslaan;
  64.     private javax.swing.JButton opslaanNieuweUser;
  65.     private javax.swing.JButton opslaanBestaandeUser;
  66.     //</editor-fold>
  67.  
  68.     public GUI() {
  69.         super("iQuiz");
  70.         qz = new Quiz();
  71.         dbiQuiz = new DatabaseCon();
  72.         setLayout(new FlowLayout());
  73.         setVisible(true);
  74.         setSize(128, 219);
  75.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  76. //user = new Gebruiker();//een user declareren die de login gegevens zalopvangen als logIn() uitgevoerd wordt
  77. //de objecten van logIn panel instantieren
  78.         JpLogin = new JPanel();
  79.         btnSpelen = new JButton("Spelen");
  80.         btnGast = new JButton("Gast");
  81.         lbliQuiz = new JLabel("iQuiz");
  82.         txtUsername = new JTextField();
  83.         txtPass = new JTextField();
  84. //LogIn() Configureren
  85.         txtPass.setText("abc");
  86.         txtUsername.setText("christophe");
  87.         JpLogin.setLayout(new GridLayout(5, 1));
  88.         JpLogin.setVisible(true);
  89.         btnSpelen.addActionListener(
  90.                 new ActionListener() {
  91.  
  92.                     public void actionPerformed(ActionEvent e) {
  93.                         String  wachtwoord;
  94.                         gebruikersnaam = txtUsername.getText();
  95.                         wachtwoord = txtPass.getText();
  96.                         String temp = dbiQuiz.zoekWachtwoord(gebruikersnaam);
  97.  
  98.                         if (wachtwoord.equals(temp)) {
  99.                             Gebruiker speler = new Gebruiker();
  100.                             speler.setNaam(gebruikersnaam);
  101.                             txtPass.setBackground(null);
  102.                             quizConfiguratie();
  103.                         } else {
  104.                             JOptionPane.showMessageDialog(null, "Fout wachtwoord!\nGelieve opnieuw te proberen.");
  105.                             txtPass.setText("");
  106.                             txtPass.setBackground(Color.pink);
  107.                             txtPass.hasFocus();
  108.                         }
  109.  
  110.  
  111.  
  112.                         //voorlopig de quiz gewoon starten zonder enige controle, daar er nog geen database connectie is
  113.  
  114.                     }
  115.                 });
  116.         btnGast.addActionListener(
  117.                 new ActionListener() {
  118.  
  119.                     public void actionPerformed(ActionEvent e) {
  120.                         //wat moet er gebeuren als je op de knop gast klikt!
  121.                         //hier dan meteen een quiz starten
  122.                     }
  123.                 });
  124.  
  125. //de objecten toevoegen aan de panel
  126.         JpLogin.add(lbliQuiz);
  127.         JpLogin.add(txtUsername);
  128.         JpLogin.add(txtPass);
  129.         JpLogin.add(btnSpelen);
  130.         JpLogin.add(btnGast);
  131.  
  132.  
  133.  
  134. //De objecten van de methode quizConfiguratie() instantieren
  135.         JpQuizConfiguratie = new JPanel();
  136.         lbliQuiz = new JLabel("iQuiz");
  137.         sprVragenCounter = new JSpinner();
  138.         tbtnGoedFout = new JToggleButton("Goed of Fout Vragen");
  139.         tbtnMeerkeuze = new JToggleButton("Meerkeuzevragen");
  140.         tbtnBeeldvraag = new JToggleButton("Beeldvragen");
  141.         lblLeeg = new JLabel("");
  142.         btnStart = new JButton("Start");
  143.  
  144. //de objecten configureren
  145.         JpQuizConfiguratie.setLayout(new GridLayout(7, 1));
  146.         JpQuizConfiguratie.setVisible(true);
  147.         btnStart.addActionListener(
  148.                 new ActionListener() {
  149.  
  150.                     public void actionPerformed(ActionEvent e) {
  151.                         boolean mkv, gfv, bdv;
  152.                         mkv = tbtnMeerkeuze.isSelected();
  153.                         gfv = tbtnGoedFout.isSelected();
  154.                         bdv = tbtnBeeldvraag.isSelected();
  155.                         int aantalvragen = Integer.parseInt(sprVragenCounter.getValue().toString());
  156.                         JOptionPane.showMessageDialog(null, "Values:\nAantal vragen: " + aantalvragen + "\nMkv: " + mkv + "\nGfv: " + gfv + "\nBdv: " + bdv);
  157.                         array = dbiQuiz.vulArray(aantalvragen, mkv, gfv, bdv);
  158.                         if (array != null) {
  159.                             JOptionPane.showMessageDialog(null, "De array die hij terug krijgt is: " + array.length);
  160.                             countertoonVraag = 0;
  161.                             volgendeVraag();
  162.  
  163.                         } else {
  164.                             JOptionPane.showMessageDialog(null, "Er kunnen geen vragen opgehaald worden volgens deze criteria. Gelieve deze te wijzigen");
  165.                         }
  166.                     }//actionPerformed
  167.                 });
  168.  
  169.  
  170.         //de objecten toevoegen aan de panel
  171.         JpQuizConfiguratie.add(lbliQuiz);
  172.         JpQuizConfiguratie.add(sprVragenCounter);
  173.         JpQuizConfiguratie.add(tbtnGoedFout);
  174.         JpQuizConfiguratie.add(tbtnMeerkeuze);
  175.         JpQuizConfiguratie.add(tbtnBeeldvraag);
  176.         JpQuizConfiguratie.add(lblLeeg);
  177.         JpQuizConfiguratie.add(btnStart);
  178. //meerkeuzepanel instantieren
  179.         JpMeerkeuze = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10));
  180. //goedfoutpanel instantieren
  181.         JpGoedFout = new JPanel(new FlowLayout(FlowLayout.TRAILING, 10, 10));
  182.         //toevoegen aan de panel
  183.         add(JpLogin);
  184.         add(JpQuizConfiguratie);
  185.         add(JpMeerkeuze);
  186.         add(JpGoedFout);
  187.         //de methode login aanroepen
  188.         logIn();
  189.  
  190.  
  191.     }//sluithaakje constructor
  192.  
  193.     private void volgendeVraag() {
  194.         //this.removeAll();
  195.         if (countertoonVraag < array.length) {
  196.             String[] antwoorden = array[countertoonVraag].toonVraag();
  197.             String vraagzin;
  198.             vraagzin = array[countertoonVraag].getVraagzin();
  199.             if (antwoorden.length == 1) {
  200.                 setZichtbaar(false);
  201.                 JpGoedFout.removeAll();
  202.                 setSize(325, 170);
  203.                 setGoedfoutPanel(countertoonVraag, vraagzin);
  204.             }
  205.             if (antwoorden.length == 4) {
  206.                 setZichtbaar(false);
  207. //de antwoorden randomizen, zodat het juist steeds achter andere knop zit
  208.                 antwoorden = randomizeAntwoorden(antwoorden);
  209.                 setMeerkeuzePanel(countertoonVraag, vraagzin, antwoorden);
  210.                 //countertoonVraag++;
  211.             }
  212.             //code
  213.         }//if counter
  214.         else {
  215.             JOptionPane.showMessageDialog(null, "Alle vragen zijn getoond");
  216.             user = new Gebruiker();
  217.             int highscore = user.getHighScore();
  218.             if (qz.getResultaat() > highscore) {
  219.                 user.setHighScore(qz.getResultaat());
  220.                 JOptionPane.showMessageDialog(null, "U heeft u highscore verbroken!\nUw nieuwe score bedraagt: " + user.getHighScore());
  221.                 toonResultaat(correcteAntwoorden, fouteAntwoorden);
  222.             }//if score
  223.         }
  224.     }//volgendeVraag()
  225.  
  226.     public void logIn() {
  227.         //de instellingen van de JFrame GUI veranderen naargelang de panel
  228.         setTitle("Aanmelden");
  229.         setSize(128, 219);
  230.         setZichtbaar(false);//de panels onzichtbaar maken adhv de methode
  231.         JpLogin.setVisible(true);//de panel zichtbaar zetten
  232.         txtUsername.requestFocus();
  233.  
  234.     }
  235.  
  236.     public void quizConfiguratie() {
  237.         //de instellingen van de JFrame GUI veranderen naargelang de panel
  238.         setTitle("Quiz Configuratie");
  239.         setSize(220, 400);
  240.         setZichtbaar(false);//de panels onzichtbaar maken adhv de methode
  241.         JpQuizConfiguratie.setVisible(true);//de panel zichtbaar zetten
  242.     }
  243.  
  244.     public void setZichtbaar(boolean bln) {
  245.         JpLogin.setVisible(bln);
  246.         JpQuizConfiguratie.setVisible(bln);
  247.         JpMeerkeuze.setVisible(bln);
  248.         JpGoedFout.setVisible(bln);
  249.         JpResultaat = new JPanel();
  250.         JpResultaat.setVisible(bln);
  251.  
  252.     }
  253.  
  254.     private String[] randomizeAntwoorden(String[] invoer) {
  255.         List<String> list = Arrays.asList(invoer);
  256.         Collections.shuffle(list);
  257.         String[] uitvoerArray = list.toArray(new String[]{});
  258.         return uitvoerArray;
  259.     }//randomizeAntwoorden()
  260.  
  261.     public void setMeerkeuzePanel(int counter, String vraagzin, String[] antwoorden) {
  262.         setZichtbaar(false);
  263. //de objecten van het meerkeuzepanel instantieren
  264.         txtKeuze4 = new JTextField(10);
  265.         tbtnKeuze4 = new JToggleButton("Keuze 4", false);
  266.         txtKeuze3 = new JTextField(10);
  267.         tbtnKeuze3 = new JToggleButton("Keuze 3", false);
  268.         txtKeuze2 = new JTextField(10);
  269.         tbtnKeuze2 = new JToggleButton("Keuze 2", false);
  270.         txtKeuze1 = new JTextField(10);
  271.         tbtnKeuze1 = new JToggleButton("Keuze 1", false);
  272.         txtVraagzinMK = new JTextArea();
  273. //de intellingen van de objecten van meerkeuzepanel
  274.         tbtnKeuze1.setSize(40, 40);
  275.         tbtnKeuze2.setSize(40, 40);
  276.         tbtnKeuze3.setSize(40, 40);
  277.         tbtnKeuze4.setSize(40, 40);
  278.         txtKeuze1.setText(antwoorden[0]);
  279.         txtKeuze2.setText(antwoorden[1]);
  280.         txtKeuze3.setText(antwoorden[2]);
  281.         txtKeuze4.setText(antwoorden[3]);
  282.         txtVraagzinMK.setText(vraagzin);
  283.         txtVraagzinMK.setBackground(java.awt.Color.lightGray);
  284.         txtVraagzinMK.setColumns(10);
  285.         txtVraagzinMK.setEditable(false);
  286.         txtVraagzinMK.setFont(new java.awt.Font("Tahoma", 0, 18));
  287.         txtVraagzinMK.setLineWrap(true);
  288.         txtVraagzinMK.setRows(5);
  289.         txtVraagzinMK.setWrapStyleWord(true);
  290.         txtVraagzinMK.setMaximumSize(new Dimension(164, 114));
  291.         txtVraagzinMK.setMinimumSize(new Dimension(164, 114));
  292.         txtVraagzinMK.setVisible(true);
  293. //de objecten toevoegen aan het panel
  294.         ActionListener meerkeuzeListener = new ActionListener() {
  295.  
  296.             public void actionPerformed(ActionEvent e) {
  297.                 String antwoord = array[countertoonVraag].getAntwoord();
  298.                 if (e.getSource() == tbtnKeuze1) {
  299.                     if (antwoord.equalsIgnoreCase(txtKeuze1.getText())) {
  300.                         qz.setResultaat(qz.getResultaat() + ((array[countertoonVraag].getGewicht() * 1)));
  301.                         JOptionPane.showMessageDialog(null, "Correct!");
  302.                         correcteAntwoorden.add(array[countertoonVraag].getID());
  303.                         countertoonVraag++;
  304.                         volgendeVraag();
  305.                     } else {
  306.                         countertoonVraag++;
  307.                         JOptionPane.showMessageDialog(null, "U heeft foutief geantwoord!");
  308.                     }
  309.                 }//if
  310.  
  311.                 if (e.getSource() == tbtnKeuze2) {
  312.  
  313.                     if (antwoord.equalsIgnoreCase(txtKeuze2.getText())) {
  314.                         qz.setResultaat(qz.getResultaat() + (array[countertoonVraag].getGewicht() * 1));
  315.                         correcteAntwoorden.add(array[countertoonVraag].getID());
  316.                         countertoonVraag++;
  317.                         volgendeVraag();
  318.                     } else {
  319.                         fouteAntwoorden.add(array[countertoonVraag].getID());
  320.                         countertoonVraag++;
  321.                     }
  322.                 }//if
  323.  
  324.                 if (e.getSource() == tbtnKeuze3) {
  325.                     if (antwoord.equalsIgnoreCase(txtKeuze3.getText())) {
  326.                         qz.setResultaat(qz.getResultaat() + (array[countertoonVraag].getGewicht() * 1));
  327.                         correcteAntwoorden.add(array[countertoonVraag].getID());
  328.                         countertoonVraag++;
  329.                         volgendeVraag();
  330.                     } else {
  331.                         fouteAntwoorden.add(array[countertoonVraag].getID());
  332.                         countertoonVraag++;
  333.                         volgendeVraag();
  334.                     }
  335.                 }//if
  336.                 if (e.getSource() == tbtnKeuze4) {
  337.                     if (antwoord.equals(txtKeuze4.getText())) {
  338.                         qz.setResultaat(qz.getResultaat() + (array[countertoonVraag].getGewicht() * 1));
  339.                         correcteAntwoorden.add(array[countertoonVraag].getID());
  340.                         countertoonVraag++;
  341.                         volgendeVraag();
  342.                     } else {
  343.                         fouteAntwoorden.add(array[countertoonVraag].getID());
  344.                         countertoonVraag++;
  345.                         volgendeVraag();
  346.                     }
  347.                 }//if tbtnKeuze4
  348.  
  349.             }//actionPerformed()
  350.         };
  351.         tbtnKeuze1.addActionListener(meerkeuzeListener);
  352.         tbtnKeuze2.addActionListener(meerkeuzeListener);
  353.         tbtnKeuze3.addActionListener(meerkeuzeListener);
  354.         tbtnKeuze4.addActionListener(meerkeuzeListener);
  355.         JpMeerkeuze.removeAll();
  356.         JpMeerkeuze.add(tbtnKeuze1);
  357.         JpMeerkeuze.add(txtKeuze1);
  358.         JpMeerkeuze.add(tbtnKeuze2);
  359.         JpMeerkeuze.add(txtKeuze2);
  360.         JpMeerkeuze.add(tbtnKeuze3);
  361.         JpMeerkeuze.add(txtKeuze3);
  362.         JpMeerkeuze.add(tbtnKeuze4);
  363.         JpMeerkeuze.add(txtKeuze4);
  364.         JpMeerkeuze.add(txtVraagzinMK);
  365. //de container leegmaken voor de zekerheid
  366.         setZichtbaar(false);
  367.         add(JpMeerkeuze);
  368.         JpMeerkeuze.setVisible(true);
  369.         repaint();
  370.     }//setMeerkeuzePanel
  371.  
  372.     private void setGoedfoutPanel(int counter, String vraagzin) {
  373.         setZichtbaar(false);
  374.         repaint();
  375. //de objecten van goedfout instantieren
  376.         tbtnGoed = new JToggleButton("Goed", false);
  377.         tbtnFout = new JToggleButton("Fout", false);
  378.         txtVraagzinGF = new JTextArea();
  379. //instellingen van de objecten van goedfout
  380.         txtVraagzinGF.setBackground(Color.lightGray);
  381.         txtVraagzinGF.setColumns(10);
  382.         txtVraagzinGF.setEditable(false);
  383.         txtVraagzinGF.setFont(new java.awt.Font("Tahoma", 0, 18));
  384.         txtVraagzinGF.setLineWrap(true);
  385.         txtVraagzinGF.setRows(5);
  386.         txtVraagzinGF.setWrapStyleWord(true);
  387.         txtVraagzinGF.setMaximumSize(new Dimension(164, 114));
  388.         txtVraagzinGF.setMinimumSize(new Dimension(164, 114));
  389. //de vraagzin in de textarea stoppen
  390.         txtVraagzinGF.setText(vraagzin);
  391.         JpMeerkeuze.removeAll();
  392. //de actionlistener toevoegen
  393.         ActionListener actionListener = new ActionListener() {
  394.  
  395.             public void actionPerformed(ActionEvent e) {
  396.                 String antwoord = array[countertoonVraag].getAntwoord();
  397.                 if (e.getSource() == tbtnFout) {
  398.                     if (antwoord.equals("0")) {
  399.                         qz.setResultaat(qz.getResultaat() + (array[countertoonVraag].getGewicht() * 1));
  400.                         correcteAntwoorden.add(array[countertoonVraag].getID());
  401.                         countertoonVraag++;
  402.                         volgendeVraag();
  403.                     }//if
  404.                     else {
  405.                         fouteAntwoorden.add(array[countertoonVraag].getID());
  406.                         JOptionPane.showMessageDialog(null, "U heeft foutief geantwooord!");
  407.                         countertoonVraag++;
  408.                         volgendeVraag();
  409.                     }
  410.                 }//if
  411.                 if (e.getSource() == tbtnGoed) {
  412.                     if (antwoord.equals("1")) {
  413.                         qz.setResultaat(qz.getResultaat() + (array[countertoonVraag].getGewicht() * 1));
  414.                         correcteAntwoorden.add(array[countertoonVraag].getID());
  415.                         countertoonVraag++;
  416.                         volgendeVraag();
  417.                     }//if
  418.                     else {
  419.                         fouteAntwoorden.add(array[countertoonVraag].getID());
  420.                         countertoonVraag++;
  421.                         volgendeVraag();
  422.                     }
  423.                 }//if
  424.             }//actionPerformed()
  425.         };
  426.         tbtnGoed.addActionListener(actionListener);
  427.         tbtnFout.addActionListener(actionListener);
  428.         JpMeerkeuze.removeAll();
  429.         JpMeerkeuze.add(txtVraagzinGF);
  430.         JpMeerkeuze.add(tbtnFout);
  431.         JpMeerkeuze.add(tbtnGoed);
  432.         setZichtbaar(false);
  433.         JpMeerkeuze.setVisible(true);
  434.     }//setGoedFoutPanel
  435.  
  436.     private void toonResultaat(ArrayList<Integer> correcte, ArrayList<Integer> foute) {
  437.         DefaultListModel listModel;
  438.         nietOpslaan = new JButton("Niet Opslaan");
  439.         opslaanBestaandeUser = new JButton("Opslaan als bestaande gebruiker");
  440.         opslaanNieuweUser = new JButton("Opslaan als nieuwe gebruiker");
  441.         listModel = new DefaultListModel();
  442.  
  443.         for(int alpha : correcte)listModel.addElement(dbiQuiz.getVraagzinByID(alpha));
  444.         correctList = new JList(listModel);
  445.        
  446.         listModel.clear();
  447.  
  448.         for(int beta : foute)listModel.addElement(dbiQuiz.getVraagzinByID(beta));
  449.         foutiefList = new JList(listModel);
  450.        
  451.         setSize(430, 320);
  452.         foutiefList.setForeground(new java.awt.Color(0, 204, 0));
  453.         correctList.setForeground(new java.awt.Color(255, 0, 51));
  454.         JpResultaat.add(correctList);
  455.         JpResultaat.add(foutiefList);
  456.         JpResultaat.setVisible(true);
  457.         add(JpResultaat);
  458.        
  459.  
  460.  
  461.  
  462.  
  463.     }
  464. }//klasse sluiten
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement