【问题标题】:How Do I Add Functions to my JButtons [duplicate]如何向我的 JButton 添加功能 [重复]
【发布时间】:2016-08-29 20:49:56
【问题描述】:

我正在尝试制作一个 texttwist 类型的游戏,你可以在其中随机获得字母,然后将它们变成单词,有点像拼字游戏。我需要弄清楚如何在我的 jbuttons 中添加一个功能,例如,清除按钮清除猜测面板,或者提交按钮提交它等等。

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

}

【问题讨论】:

  • 您似乎已经在使用ActionListener,当您调用addActionListener 时,您遇到了什么问题?

标签: java jbutton


【解决方案1】:
 yourbutton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
               //you logic here
            }
        });
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-03
    • 2013-11-16
    • 2021-03-11
    • 1970-01-01
    • 2021-12-28
    • 2021-12-13
    • 2017-04-26
    • 2021-08-08
    相关资源
    最近更新 更多