2016-05-04 30 views
-2

我試圖製作一個texttwist類型的遊戲,你得到了隨機字母,並且必須將它們變成單詞,類似於拼字遊戲。我需要弄清楚如何將功能添加到我的Jbuttons中進行,例如,清除按鈕清除猜測面板,或提交按鈕提交等如何將函數添加到我的JButton中

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)); 
    } 

} 
+2

您似乎已經成爲使用'ActionListener',當你調用'addActionListener'時,你會得到什麼問題? – Berger

回答

-1
yourbutton.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       //you logic here 
      } 
     }); 
    }