Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.FlowLayout;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import javax.swing.*;
- import javax.swing.JFrame;
- import java.awt.event.ActionListener;
- import java.sql.Statement;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.List;
- public class GUI extends JFrame {
- //<editor-fold defaultstate="collapsed">
- private String gebruikersnaam;
- private Quiz qz;
- private Vraag[] array;//array van vragen
- private Gebruiker user;
- private int countertoonVraag;
- private DatabaseCon dbiQuiz;
- private Statement s;
- private ArrayList<Integer> fouteAntwoorden = new ArrayList<Integer>();
- private ArrayList<Integer> correcteAntwoorden = new ArrayList<Integer>();
- //een panel declareren voor de methoden (logIn(), quizConfiguratie())
- private JPanel JpQuizConfiguratie;
- private JPanel JpLogin;
- private JPanel JpMeerkeuze;
- private JPanel JpGoedFout;
- private JPanel JpResultaat;
- //alle interface objecten voor het JPanel van de methode logIn()
- private JButton btnSpelen;//login
- private JButton btnGast;//login
- private JLabel lbliQuiz;//login
- private JTextField txtUsername;//login
- private JTextField txtPass;//login
- //alle interface objecten voor het JPanel van de methode quizConfiguratie()
- private JLabel lblLeeg;
- private JToggleButton tbtnGoedFout;
- private JToggleButton tbtnMeerkeuze;
- private JToggleButton tbtnBeeldvraag;
- private JButton btnStart;
- private JSpinner sprVragenCounter;
- //objecten van de panel meerkeuzevraag declareren
- private JTextArea txtVraagzinMK;
- private JToggleButton tbtnKeuze1;
- private JTextField txtKeuze1;
- private JToggleButton tbtnKeuze2;
- private JTextField txtKeuze2;
- private JToggleButton tbtnKeuze3;
- private JTextField txtKeuze3;
- private JToggleButton tbtnKeuze4;
- private JTextField txtKeuze4;
- //de objecten van goedfout declareren
- private JToggleButton tbtnGoed;
- private JToggleButton tbtnFout;
- private JTextArea txtVraagzinGF;
- //alle elementen van het score panel
- private javax.swing.JList foutiefList;
- private javax.swing.JList correctList;
- private javax.swing.JButton nietOpslaan;
- private javax.swing.JButton opslaanNieuweUser;
- private javax.swing.JButton opslaanBestaandeUser;
- //</editor-fold>
- public GUI() {
- super("iQuiz");
- qz = new Quiz();
- dbiQuiz = new DatabaseCon();
- setLayout(new FlowLayout());
- setVisible(true);
- setSize(128, 219);
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- //user = new Gebruiker();//een user declareren die de login gegevens zalopvangen als logIn() uitgevoerd wordt
- //de objecten van logIn panel instantieren
- JpLogin = new JPanel();
- btnSpelen = new JButton("Spelen");
- btnGast = new JButton("Gast");
- lbliQuiz = new JLabel("iQuiz");
- txtUsername = new JTextField();
- txtPass = new JTextField();
- //LogIn() Configureren
- txtPass.setText("abc");
- txtUsername.setText("christophe");
- JpLogin.setLayout(new GridLayout(5, 1));
- JpLogin.setVisible(true);
- btnSpelen.addActionListener(
- new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String wachtwoord;
- gebruikersnaam = txtUsername.getText();
- wachtwoord = txtPass.getText();
- String temp = dbiQuiz.zoekWachtwoord(gebruikersnaam);
- if (wachtwoord.equals(temp)) {
- Gebruiker speler = new Gebruiker();
- speler.setNaam(gebruikersnaam);
- txtPass.setBackground(null);
- quizConfiguratie();
- } else {
- JOptionPane.showMessageDialog(null, "Fout wachtwoord!\nGelieve opnieuw te proberen.");
- txtPass.setText("");
- txtPass.setBackground(Color.pink);
- txtPass.hasFocus();
- }
- //voorlopig de quiz gewoon starten zonder enige controle, daar er nog geen database connectie is
- }
- });
- btnGast.addActionListener(
- new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- //wat moet er gebeuren als je op de knop gast klikt!
- //hier dan meteen een quiz starten
- }
- });
- //de objecten toevoegen aan de panel
- JpLogin.add(lbliQuiz);
- JpLogin.add(txtUsername);
- JpLogin.add(txtPass);
- JpLogin.add(btnSpelen);
- JpLogin.add(btnGast);
- //De objecten van de methode quizConfiguratie() instantieren
- JpQuizConfiguratie = new JPanel();
- lbliQuiz = new JLabel("iQuiz");
- sprVragenCounter = new JSpinner();
- tbtnGoedFout = new JToggleButton("Goed of Fout Vragen");
- tbtnMeerkeuze = new JToggleButton("Meerkeuzevragen");
- tbtnBeeldvraag = new JToggleButton("Beeldvragen");
- lblLeeg = new JLabel("");
- btnStart = new JButton("Start");
- //de objecten configureren
- JpQuizConfiguratie.setLayout(new GridLayout(7, 1));
- JpQuizConfiguratie.setVisible(true);
- btnStart.addActionListener(
- new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- boolean mkv, gfv, bdv;
- mkv = tbtnMeerkeuze.isSelected();
- gfv = tbtnGoedFout.isSelected();
- bdv = tbtnBeeldvraag.isSelected();
- int aantalvragen = Integer.parseInt(sprVragenCounter.getValue().toString());
- JOptionPane.showMessageDialog(null, "Values:\nAantal vragen: " + aantalvragen + "\nMkv: " + mkv + "\nGfv: " + gfv + "\nBdv: " + bdv);
- array = dbiQuiz.vulArray(aantalvragen, mkv, gfv, bdv);
- if (array != null) {
- JOptionPane.showMessageDialog(null, "De array die hij terug krijgt is: " + array.length);
- countertoonVraag = 0;
- volgendeVraag();
- } else {
- JOptionPane.showMessageDialog(null, "Er kunnen geen vragen opgehaald worden volgens deze criteria. Gelieve deze te wijzigen");
- }
- }//actionPerformed
- });
- //de objecten toevoegen aan de panel
- JpQuizConfiguratie.add(lbliQuiz);
- JpQuizConfiguratie.add(sprVragenCounter);
- JpQuizConfiguratie.add(tbtnGoedFout);
- JpQuizConfiguratie.add(tbtnMeerkeuze);
- JpQuizConfiguratie.add(tbtnBeeldvraag);
- JpQuizConfiguratie.add(lblLeeg);
- JpQuizConfiguratie.add(btnStart);
- //meerkeuzepanel instantieren
- JpMeerkeuze = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10));
- //goedfoutpanel instantieren
- JpGoedFout = new JPanel(new FlowLayout(FlowLayout.TRAILING, 10, 10));
- //toevoegen aan de panel
- add(JpLogin);
- add(JpQuizConfiguratie);
- add(JpMeerkeuze);
- add(JpGoedFout);
- //de methode login aanroepen
- logIn();
- }//sluithaakje constructor
- private void volgendeVraag() {
- //this.removeAll();
- if (countertoonVraag < array.length) {
- String[] antwoorden = array[countertoonVraag].toonVraag();
- String vraagzin;
- vraagzin = array[countertoonVraag].getVraagzin();
- if (antwoorden.length == 1) {
- setZichtbaar(false);
- JpGoedFout.removeAll();
- setSize(325, 170);
- setGoedfoutPanel(countertoonVraag, vraagzin);
- }
- if (antwoorden.length == 4) {
- setZichtbaar(false);
- //de antwoorden randomizen, zodat het juist steeds achter andere knop zit
- antwoorden = randomizeAntwoorden(antwoorden);
- setMeerkeuzePanel(countertoonVraag, vraagzin, antwoorden);
- //countertoonVraag++;
- }
- //code
- }//if counter
- else {
- JOptionPane.showMessageDialog(null, "Alle vragen zijn getoond");
- user = new Gebruiker();
- int highscore = user.getHighScore();
- if (qz.getResultaat() > highscore) {
- user.setHighScore(qz.getResultaat());
- JOptionPane.showMessageDialog(null, "U heeft u highscore verbroken!\nUw nieuwe score bedraagt: " + user.getHighScore());
- toonResultaat(correcteAntwoorden, fouteAntwoorden);
- }//if score
- }
- }//volgendeVraag()
- public void logIn() {
- //de instellingen van de JFrame GUI veranderen naargelang de panel
- setTitle("Aanmelden");
- setSize(128, 219);
- setZichtbaar(false);//de panels onzichtbaar maken adhv de methode
- JpLogin.setVisible(true);//de panel zichtbaar zetten
- txtUsername.requestFocus();
- }
- public void quizConfiguratie() {
- //de instellingen van de JFrame GUI veranderen naargelang de panel
- setTitle("Quiz Configuratie");
- setSize(220, 400);
- setZichtbaar(false);//de panels onzichtbaar maken adhv de methode
- JpQuizConfiguratie.setVisible(true);//de panel zichtbaar zetten
- }
- public void setZichtbaar(boolean bln) {
- JpLogin.setVisible(bln);
- JpQuizConfiguratie.setVisible(bln);
- JpMeerkeuze.setVisible(bln);
- JpGoedFout.setVisible(bln);
- JpResultaat = new JPanel();
- JpResultaat.setVisible(bln);
- }
- private String[] randomizeAntwoorden(String[] invoer) {
- List<String> list = Arrays.asList(invoer);
- Collections.shuffle(list);
- String[] uitvoerArray = list.toArray(new String[]{});
- return uitvoerArray;
- }//randomizeAntwoorden()
- public void setMeerkeuzePanel(int counter, String vraagzin, String[] antwoorden) {
- setZichtbaar(false);
- //de objecten van het meerkeuzepanel instantieren
- txtKeuze4 = new JTextField(10);
- tbtnKeuze4 = new JToggleButton("Keuze 4", false);
- txtKeuze3 = new JTextField(10);
- tbtnKeuze3 = new JToggleButton("Keuze 3", false);
- txtKeuze2 = new JTextField(10);
- tbtnKeuze2 = new JToggleButton("Keuze 2", false);
- txtKeuze1 = new JTextField(10);
- tbtnKeuze1 = new JToggleButton("Keuze 1", false);
- txtVraagzinMK = new JTextArea();
- //de intellingen van de objecten van meerkeuzepanel
- tbtnKeuze1.setSize(40, 40);
- tbtnKeuze2.setSize(40, 40);
- tbtnKeuze3.setSize(40, 40);
- tbtnKeuze4.setSize(40, 40);
- txtKeuze1.setText(antwoorden[0]);
- txtKeuze2.setText(antwoorden[1]);
- txtKeuze3.setText(antwoorden[2]);
- txtKeuze4.setText(antwoorden[3]);
- txtVraagzinMK.setText(vraagzin);
- txtVraagzinMK.setBackground(java.awt.Color.lightGray);
- txtVraagzinMK.setColumns(10);
- txtVraagzinMK.setEditable(false);
- txtVraagzinMK.setFont(new java.awt.Font("Tahoma", 0, 18));
- txtVraagzinMK.setLineWrap(true);
- txtVraagzinMK.setRows(5);
- txtVraagzinMK.setWrapStyleWord(true);
- txtVraagzinMK.setMaximumSize(new Dimension(164, 114));
- txtVraagzinMK.setMinimumSize(new Dimension(164, 114));
- txtVraagzinMK.setVisible(true);
- //de objecten toevoegen aan het panel
- ActionListener meerkeuzeListener = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String antwoord = array[countertoonVraag].getAntwoord();
- if (e.getSource() == tbtnKeuze1) {
- if (antwoord.equalsIgnoreCase(txtKeuze1.getText())) {
- qz.setResultaat(qz.getResultaat() + ((array[countertoonVraag].getGewicht() * 1)));
- JOptionPane.showMessageDialog(null, "Correct!");
- correcteAntwoorden.add(array[countertoonVraag].getID());
- countertoonVraag++;
- volgendeVraag();
- } else {
- countertoonVraag++;
- JOptionPane.showMessageDialog(null, "U heeft foutief geantwoord!");
- }
- }//if
- if (e.getSource() == tbtnKeuze2) {
- if (antwoord.equalsIgnoreCase(txtKeuze2.getText())) {
- qz.setResultaat(qz.getResultaat() + (array[countertoonVraag].getGewicht() * 1));
- correcteAntwoorden.add(array[countertoonVraag].getID());
- countertoonVraag++;
- volgendeVraag();
- } else {
- fouteAntwoorden.add(array[countertoonVraag].getID());
- countertoonVraag++;
- }
- }//if
- if (e.getSource() == tbtnKeuze3) {
- if (antwoord.equalsIgnoreCase(txtKeuze3.getText())) {
- qz.setResultaat(qz.getResultaat() + (array[countertoonVraag].getGewicht() * 1));
- correcteAntwoorden.add(array[countertoonVraag].getID());
- countertoonVraag++;
- volgendeVraag();
- } else {
- fouteAntwoorden.add(array[countertoonVraag].getID());
- countertoonVraag++;
- volgendeVraag();
- }
- }//if
- if (e.getSource() == tbtnKeuze4) {
- if (antwoord.equals(txtKeuze4.getText())) {
- qz.setResultaat(qz.getResultaat() + (array[countertoonVraag].getGewicht() * 1));
- correcteAntwoorden.add(array[countertoonVraag].getID());
- countertoonVraag++;
- volgendeVraag();
- } else {
- fouteAntwoorden.add(array[countertoonVraag].getID());
- countertoonVraag++;
- volgendeVraag();
- }
- }//if tbtnKeuze4
- }//actionPerformed()
- };
- tbtnKeuze1.addActionListener(meerkeuzeListener);
- tbtnKeuze2.addActionListener(meerkeuzeListener);
- tbtnKeuze3.addActionListener(meerkeuzeListener);
- tbtnKeuze4.addActionListener(meerkeuzeListener);
- JpMeerkeuze.removeAll();
- JpMeerkeuze.add(tbtnKeuze1);
- JpMeerkeuze.add(txtKeuze1);
- JpMeerkeuze.add(tbtnKeuze2);
- JpMeerkeuze.add(txtKeuze2);
- JpMeerkeuze.add(tbtnKeuze3);
- JpMeerkeuze.add(txtKeuze3);
- JpMeerkeuze.add(tbtnKeuze4);
- JpMeerkeuze.add(txtKeuze4);
- JpMeerkeuze.add(txtVraagzinMK);
- //de container leegmaken voor de zekerheid
- setZichtbaar(false);
- add(JpMeerkeuze);
- JpMeerkeuze.setVisible(true);
- repaint();
- }//setMeerkeuzePanel
- private void setGoedfoutPanel(int counter, String vraagzin) {
- setZichtbaar(false);
- repaint();
- //de objecten van goedfout instantieren
- tbtnGoed = new JToggleButton("Goed", false);
- tbtnFout = new JToggleButton("Fout", false);
- txtVraagzinGF = new JTextArea();
- //instellingen van de objecten van goedfout
- txtVraagzinGF.setBackground(Color.lightGray);
- txtVraagzinGF.setColumns(10);
- txtVraagzinGF.setEditable(false);
- txtVraagzinGF.setFont(new java.awt.Font("Tahoma", 0, 18));
- txtVraagzinGF.setLineWrap(true);
- txtVraagzinGF.setRows(5);
- txtVraagzinGF.setWrapStyleWord(true);
- txtVraagzinGF.setMaximumSize(new Dimension(164, 114));
- txtVraagzinGF.setMinimumSize(new Dimension(164, 114));
- //de vraagzin in de textarea stoppen
- txtVraagzinGF.setText(vraagzin);
- JpMeerkeuze.removeAll();
- //de actionlistener toevoegen
- ActionListener actionListener = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String antwoord = array[countertoonVraag].getAntwoord();
- if (e.getSource() == tbtnFout) {
- if (antwoord.equals("0")) {
- qz.setResultaat(qz.getResultaat() + (array[countertoonVraag].getGewicht() * 1));
- correcteAntwoorden.add(array[countertoonVraag].getID());
- countertoonVraag++;
- volgendeVraag();
- }//if
- else {
- fouteAntwoorden.add(array[countertoonVraag].getID());
- JOptionPane.showMessageDialog(null, "U heeft foutief geantwooord!");
- countertoonVraag++;
- volgendeVraag();
- }
- }//if
- if (e.getSource() == tbtnGoed) {
- if (antwoord.equals("1")) {
- qz.setResultaat(qz.getResultaat() + (array[countertoonVraag].getGewicht() * 1));
- correcteAntwoorden.add(array[countertoonVraag].getID());
- countertoonVraag++;
- volgendeVraag();
- }//if
- else {
- fouteAntwoorden.add(array[countertoonVraag].getID());
- countertoonVraag++;
- volgendeVraag();
- }
- }//if
- }//actionPerformed()
- };
- tbtnGoed.addActionListener(actionListener);
- tbtnFout.addActionListener(actionListener);
- JpMeerkeuze.removeAll();
- JpMeerkeuze.add(txtVraagzinGF);
- JpMeerkeuze.add(tbtnFout);
- JpMeerkeuze.add(tbtnGoed);
- setZichtbaar(false);
- JpMeerkeuze.setVisible(true);
- }//setGoedFoutPanel
- private void toonResultaat(ArrayList<Integer> correcte, ArrayList<Integer> foute) {
- DefaultListModel listModel;
- nietOpslaan = new JButton("Niet Opslaan");
- opslaanBestaandeUser = new JButton("Opslaan als bestaande gebruiker");
- opslaanNieuweUser = new JButton("Opslaan als nieuwe gebruiker");
- listModel = new DefaultListModel();
- for(int alpha : correcte)listModel.addElement(dbiQuiz.getVraagzinByID(alpha));
- correctList = new JList(listModel);
- listModel.clear();
- for(int beta : foute)listModel.addElement(dbiQuiz.getVraagzinByID(beta));
- foutiefList = new JList(listModel);
- setSize(430, 320);
- foutiefList.setForeground(new java.awt.Color(0, 204, 0));
- correctList.setForeground(new java.awt.Color(255, 0, 51));
- JpResultaat.add(correctList);
- JpResultaat.add(foutiefList);
- JpResultaat.setVisible(true);
- add(JpResultaat);
- }
- }//klasse sluiten
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement