16 Jbuttons maken in Gridlayout en deze voorzien van letters (Boggle)

Status
Niet open voor verdere reacties.

OliBeerschot

Nieuwe gebruiker
Lid geworden
11 mrt 2013
Berichten
1
Ik ben het spelletje Boggle aan het programmeren maar ik krijg mijn letters niet op de Jbuttons.
De bedoeling is dus dat ik de methode schudbord aanroep en deze letters op afzonderlijk op Jbuttons plak.
Vervolgens moeten de buttons in een gridlayout geplaatst worden.

Hier de klasse Bordnieuw:
Code:
package be.test.BoggleProject.Model;


public class BordNieuw {
    private int kolommen;            //attribuut
    private int rijen;               //attribuut
    public char[][] bord;

    public BordNieuw() {
        this.kolommen = 4;
        this.rijen = 4;
        bord = new char[rijen][kolommen];
    }

    public void schudBord(){
        Dobbelsteen[] dice;
        char randomBord[][] = new char[rijen][kolommen];
        dice = initialiseerSteen();
        int d = 0;
        while (d < rijen * kolommen)
            for (int i = 0; i < rijen; i++) {
                for (int j = 0; j < kolommen; j++) {
                    randomBord[i][j] = (dice[d].getLetter());
                    d++;
                }
            }
        bord = randomBord;
    }

    public char[][] getBord() {      //getter voor bord
        return bord;                        //bord teruggeven
    }

    @Override
    public String toString() {             //override van de toString methode
        String result = "";                //attribuut result met geen inhoud
        for (int i = 0; i < rijen; i++) {      //for-loop
            for (int j = 0; j < kolommen; j++) {  //for-loop
                result += String.format("%c", bord[i][j]);    //de string result vullen met de waarden uit de kolommen
            }
            result += String.format("\n");       //als de rij vol is naar een nieuwe rij springen
        }
        return result;                     //de string result teruggeven
    }

    public Dobbelsteen[] initialiseerSteen() {
        Dobbelsteen[] dice = new Dobbelsteen[16];

        dice[0] = new Dobbelsteen('R', 'I', 'F', 'O', 'B', 'X');
        dice[1] = new Dobbelsteen('I', 'F', 'E', 'H', 'E', 'Y');
        dice[2] = new Dobbelsteen('D', 'E', 'N', 'O', 'W', 'S');
        dice[3] = new Dobbelsteen('U', 'T', 'O', 'K', 'N', 'D');
        dice[4] = new Dobbelsteen('H', 'M', 'S', 'R', 'A', 'O');
        dice[5] = new Dobbelsteen('L', 'U', 'P', 'E', 'T', 'S');
        dice[6] = new Dobbelsteen('A', 'C', 'I', 'T', 'O', 'A');
        dice[7] = new Dobbelsteen('Y', 'L', 'G', 'K', 'U', 'E');
        dice[8] = new Dobbelsteen('Q', 'B', 'M', 'J', 'O', 'A');
        dice[9] = new Dobbelsteen('E', 'H', 'I', 'S', 'P', 'N');
        dice[10] = new Dobbelsteen('V', 'E', 'T', 'I', 'G', 'N');
        dice[11] = new Dobbelsteen('B', 'A', 'L', 'I', 'Y', 'T');
        dice[12] = new Dobbelsteen('E', 'Z', 'A', 'V', 'N', 'D');
        dice[13] = new Dobbelsteen('R', 'A', 'L', 'E', 'S', 'C');
        dice[14] = new Dobbelsteen('U', 'W', 'I', 'L', 'R', 'G');
        dice[15] = new Dobbelsteen('P', 'A', 'C', 'E', 'M', 'D');

        return dice;
    }
}

Hier de klasse Dobbelsteen:
Code:
package be.test.BoggleProject.Model;

import java.util.Random;

public class Dobbelsteen {
    private char[] zijde;
    private int gekozenzijde;
    private Random random = new Random();

    public Dobbelsteen(char side1, char side2, char side3,
                       char side4, char side5, char side6) {
        zijde = new char[]{side1, side2, side3, side4, side5, side6};
        toss();
    }


    //toon de zijde die boven ligt
    public char getLetter() {
        return zijde[gekozenzijde];
    }


    //schud de dobbelstenen
    public void toss() {
        gekozenzijde = random.nextInt(6);
    }

}


[B]Hier mijn GUI, waarin de 16 Jbuttons aangemaakt moeten worden, en in een gridlayout moeten geplaatst worden.[/B]

package be.test.BoggleProject.Swing;

import be.test.BoggleProject.Model.*;

import javax.swing.*;
import javax.swing.event.MenuListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.*;


public class BoggleSpelSwing extends JFrame {
    //Objecten
    Speler deelnemer = new Speler();
    Spel game = new Spel();
    Woord word = new Woord();
    TopScore highscore = new TopScore();
    BordNieuw bord = new BordNieuw();
    //Menu
    private JMenuBar menuBar;
    private JMenu menuSpel;
    private JMenuItem itemHelp;
    private JMenuItem itemInstructies;
    private JMenuItem itemScore;
    private JMenuItem itemExit;
    //Knoppen
    private JButton checkButton;
    //IngevenWoord
    private TextField woordje;
    //letters
    private ArrayList<JButton> letters;
    private JButton letter;
    //FeedBack
    private JTextField commentaar;
    //User
    private JLabel userIdLabel;
    private JTextField userIdField;
    private JLabel userFeedBack;
    private JButton startButton;
    private JButton stopButon;

    public BoggleSpelSwing() throws HeadlessException {
        maakComponenten();
        maakLayout();
        voegListenersToe();
        toonFrame();
    }

    public void maakComponenten() {
        //Menu
        this.menuBar = new JMenuBar();
        this.menuSpel = new JMenu("Spel");
        this.itemHelp = new JMenuItem("Help");
        this.itemExit = new JMenuItem("Stop");
        this.itemScore = new JMenuItem("Highscores");
        this.itemInstructies = new JMenuItem("Instructies");
        //Knoppen
        this.checkButton = new JButton("Controleer woord");
        //IngevenWoord
        this.woordje = new TextField(25);
        //Letter
        this.letters = new ArrayList<JButton>(16);
        this.letter = new JButton();
        //Feedback
        this.commentaar = new JTextField();
        this.commentaar.setEditable(false);
        //User
        this.userIdLabel = new JLabel("Welkom bij Boggle, gelieve hier je naam in te geven.");
        this.userIdField = new JTextField(20);
        this.userFeedBack = new JLabel("");
        this.startButton = new JButton("Start spel");
        this.stopButon = new JButton("Stop");
    }

    public void maakLayout() {
        //Menu
        setJMenuBar(menuBar);
        menuBar.add(menuSpel);
        menuSpel.add(itemInstructies);
        menuSpel.add(itemScore);
        menuSpel.add(itemHelp);
        menuSpel.add(itemExit);
        //Knoppen + woord
        JPanel check = new JPanel(new FlowLayout(FlowLayout.CENTER));
        check.add(woordje);
        check.add(checkButton);
        this.add(check, BorderLayout.PAGE_END);
        //Letters
        JPanel stones = new JPanel(new GridLayout(4, 4));
        stones.add(letter);
        this.add(stones, BorderLayout.CENTER);
        letter.setBackground(Color.blue);
        //Feedback
        JPanel feedBack = new JPanel(new FlowLayout(FlowLayout.CENTER));
        feedBack.add(commentaar);
        this.add(feedBack, BorderLayout.PAGE_START);
        //User
        JPanel gebruikersInfo = new JPanel(new FlowLayout(FlowLayout.CENTER));
        gebruikersInfo.add(userIdLabel);
        gebruikersInfo.add(userIdField);
        gebruikersInfo.add(userFeedBack);
        gebruikersInfo.add(startButton);
        gebruikersInfo.add(stopButon);
        this.add(gebruikersInfo, BorderLayout.LINE_START);
    }

    public void voegListenersToe() {
        itemExit.addActionListener(new MenuListener());
        itemInstructies.addActionListener(new MenuListener());
        itemScore.addActionListener(new MenuListener());
        itemHelp.addActionListener(new MenuListener());
        stopButon.addActionListener(new StartListener());
        checkButton.addActionListener(new CheckListener());
        startButton.addActionListener(new StartListener());
    }

    public void toonFrame() {
        setTitle("Boggle - by David Eggermont & Olivier De Smet");
        setLocation(200, 200);
        setVisible(true);
        pack();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    // inner class
    private class StartListener implements ActionListener {
        public void actionPerformed(ActionEvent start) {
            String user = userIdField.getText();
            JButton geklikt = (JButton) start.getSource();
            if (geklikt == startButton) {
                userFeedBack.setText("Welkom " + user + ", Boggle wordt nu gestart!");
                deelnemer.setNaam(user);
                startButton.setVisible(false);

                bord.schudBord();
                System.out.println(bord);

                String result ="";
                for (int i = 0; i < 4; i++) {
                    for (int j = 0; j < 4; j++) {
                        result += String.format("%c", bord.bord[i][j]);
                    }
                    letter.setText(result);
                }

                game.zetBeginTijd();
            }
            else {
                JOptionPane.showConfirmDialog(BoggleSpelSwing.this, "STOOOPP");
            }
        }
    }

    private class CheckListener implements ActionListener {
        public void actionPerformed(ActionEvent check) {
            JButton geklikt = (JButton) check.getSource();
            if (geklikt == checkButton) {
                while (!game.spelGedaan()) {
                    String woord = woordje.getText();
                    if (word.bevatWoord(woord)) {
                        commentaar.setText("Het woord staat op het bord!\n");
                    } else {
                        commentaar.setText("Fout woord!\n");
                    }
                    java.util.List<String> woordenLijst = new ArrayList<String>();
                    try {
                        Scanner input = new Scanner(new FileReader("woordenlijst.txt"));
                        while (input.hasNextLine()) {
                            woordenLijst.add(input.nextLine());
                        }
                    } catch (FileNotFoundException e) {
                        commentaar.setText("woordenlijst.txt niet gevonden!\n");
                    }

                    if (woordenLijst.contains(woord)) {
                        commentaar.setText("Het woord staat in de lijst!\n");
                    } else {
                        commentaar.setText("Het woord staat niet in de lijst!\n");

                    }

                    if (word.bevatWoord(woord) && woordenLijst.contains(woord)) {
                        if (game.addWoord(woord)) {
                            commentaar.setText("Het woord is in de lijst gezet!\n");
                        } else {
                            commentaar.setText("Het woord is al gebruikt!\n");
                        }
                    }
                }
                game.isSpelGedaan();
            }
        }
    }

        private class MenuListener implements ActionListener {
            public void actionPerformed(ActionEvent b) {
                JMenuItem geklikt = (JMenuItem) b.getSource();
                if (geklikt == itemExit) {
                   JOptionPane.showConfirmDialog(BoggleSpelSwing.this, "Het spelletje wordt gestopt!");
                } else if (geklikt == itemInstructies) {
                    JOptionPane.showConfirmDialog(BoggleSpelSwing.this, "De instructies worden nu op het scherm getoont");
                } else if (geklikt == itemHelp) {
                    JOptionPane.showConfirmDialog(BoggleSpelSwing.this, "HELPPPP!");
                } else {
                    JOptionPane.showConfirmDialog(BoggleSpelSwing.this, "Je wordt nu doorverwezen om de scores te kunnen zien");
                }
            }
        }


    private class StopListener implements ActionListener {
        public void actionPerformed(ActionEvent gebeurtenis) {
            JButton geklikt = (JButton) gebeurtenis.getSource();
            if (geklikt == stopButon) {
                game.stop();
            }
        }
    }

}
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan