-2

I'm trying to make a texttwist type game where you get random letters and have to make them into words, kind of like scrabble. I need to figure out how to add a function to my jbuttons to make, for example, the clear button clear the guess panel, or the submit button submit it, etc.

package gui;

import java.awt.Color;
import java.awt.Font;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;

import gui.event_handlers.GuessButtonHandler;
import gui.event_handlers.InventoryButtonHandler;
import model.Model;
import model.Observer;

public class GUI implements Observer {

    private JFrame _window;
    private JPanel _wordsToGuessPanel;
    private JPanel _inventoryPanel;
    private JPanel _guessPanel;
    private Model _model;
    private JButton _submit;

    public GUI(Model m) {
        _model = m;
        _model.addObserver(this);

        _window = new JFrame("TwistyWord");
        _window.getContentPane().setLayout(new BoxLayout(_window.getContentPane(), BoxLayout.Y_AXIS));

        _wordsToGuessPanel = new JPanel();
        _window.getContentPane().add(_wordsToGuessPanel);

        JPanel middlePanel = new JPanel();
        middlePanel.setLayout(new BoxLayout(middlePanel, BoxLayout.X_AXIS));
        _window.getContentPane().add(middlePanel);

        JPanel controlPanel = new JPanel();
        controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.X_AXIS));
        _window.getContentPane().add(controlPanel);

        JButton shuffle = new JButton("shuffle");
        setButtonProperties(shuffle);
        controlPanel.add(shuffle);

        JButton clear = new JButton("clear");
        setButtonProperties(clear);
        controlPanel.add(clear);

        _submit = new JButton("submit");
        setButtonProperties(_submit);
        controlPanel.add(_submit);

        _inventoryPanel = new JPanel();
        _inventoryPanel.setLayout(new BoxLayout(_inventoryPanel, BoxLayout.X_AXIS));

        _guessPanel = new JPanel();
        _guessPanel.setLayout(new BoxLayout(_guessPanel, BoxLayout.X_AXIS));

        middlePanel.add(new JLabel("INVENTORY: "));
            middlePanel.add(_inventoryPanel);
            middlePanel.add(new JLabel("GUESS: "));
        middlePanel.add(_guessPanel);

        _model.start();

        _window.setVisible(true);
        _window.pack();
        _window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    }

    @Override
    public void update() {
        _inventoryPanel.removeAll();
        ArrayList<Character> inventoryLetters = _model.getInventoryLetters();
        for (int i=0; i<inventoryLetters.size(); i=i+1) {
            JButton b = new JButton(""+inventoryLetters.get(i));
            setButtonProperties(b);
            _inventoryPanel.add(b);
            b.addActionListener(new InventoryButtonHandler(_model, i));
        }
        _guessPanel.removeAll();
        ArrayList<Character> guessLetters = _model.getGuessLetters();
        for (int i=0; i<guessLetters.size(); i=i+1) {
            JButton b = new JButton(""+guessLetters.get(i));
            setButtonProperties(b);
            _guessPanel.add(b);
            b.addActionListener(new GuessButtonHandler(_model, i));
        }
        _window.pack();
        _window.repaint();
    }

    public void setButtonProperties(JButton button) {
        button.setFont(new Font("Courier", Font.BOLD, 44));
        button.setBackground(Color.WHITE);
        button.setForeground(Color.BLACK);
        button.setOpaque(true);
        button.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, Color.DARK_GRAY, Color.LIGHT_GRAY));
    }

}
khelwood
  • 55,782
  • 14
  • 81
  • 108
  • 2
    You already seem to be using `ActionListener`, when you call `addActionListener` , so what problem do you get ? – Arnaud May 04 '16 at 12:11

1 Answers1

-1
 yourbutton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
               //you logic here
            }
        });
    }
suulisin
  • 1,414
  • 1
  • 10
  • 17