【问题标题】:Linkning JButtons with array?将按钮与数组链接?
【发布时间】:2016-08-30 10:35:15
【问题描述】:

我正在用 Java 创建配对游戏。 这个想法是我有 100 个 JButton,从 1 到 100 编号,并且它们都分配了从 1 到 50 的数字(2 倍)。当我点击任何按钮时,它应该会显示分配给该按钮的数字。并且玩家必须找到具有相同编号的第二个按钮。如何将这些数字分配给 JButtons?他们的名字(1-100)应该是可见的,所以我不能只按值命名按钮并隐藏他们的名字。

package pairgame; 

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;

public class PairGame extends JFrame implements ActionListener
{ 
    JMenuBar menuBar = new JMenuBar();
    JMenu file, help;
    JMenuItem fileExit, helpAbout; 
    JButton buttons[];

    ArrayList <Integer> numbers;

    void createMenuBar()
    {        
        file = new JMenu("File");
            fileExit = new JMenuItem("Exit");
            fileExit.addActionListener(this);
            fileExit.setAccelerator(KeyStroke.getKeyStroke("ctrl Q"));

file.add(fileExit); file.setMnemonic('f');

    help = new JMenu("Help");
        helpAbout = new JMenuItem("About");
        helpAbout.addActionListener(this);
        helpAbout.setAccelerator(KeyStroke.getKeyStroke("ctrl H"));
        help.add(helpAbout);
        help.setMnemonic('h');

    menuBar = new JMenuBar();
        menuBar.add(file);
        menuBar.add(help);
        setJMenuBar(menuBar);
}

PairGame()
{
    setTitle("Pair Game");
    setSize(600,600);
    setLocation(400,100);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLayout(new GridLayout(10,10));

    createMenuBar();

                                        // CREATING GAME MAP

    numbers = new ArrayList<Integer>();
    for(int i=1; i<=50; i++)
        numbers.add(i);
    for(int i=51; i<=100; i++)
        numbers.add(i-50);

    Collections.shuffle(numbers);      

    buttons = new JButton[100];
    for(int i=0; i<100; i++)
    {
        buttons[i] = new JButton(""+(i+1));
        buttons[i].addActionListener(this);
        add(buttons[i]);
    }


    setVisible(true);
}

public static void main(String[] args) 
{ 
    new PairGame();
} 


public void actionPerformed(ActionEvent e)
{
    Object source = e.getSource();

    if (source==fileExit)
        System.exit(0);

    if (source==helpAbout)
        JOptionPane.showMessageDialog(this, "blablabla", "About", 3);          

}

}

我刚开始写作,所以不要给我关于构造等方面的建议,因为它的前 alpha 版本:)

【问题讨论】:

    标签: java arrays collections jbutton


    【解决方案1】:

    您可以通过创建自己的扩展 JButton 的类来将值与测试分开,例如:

    public class PairButton extends JButton {
    
    private final int myRealValue;
    
    public PairButton(int myRealValue){
        this.myRealValue = myRealValue;
    }
    
    public int getMyRealValue() {
        return myRealValue;
    }
    

    }

    【讨论】:

    • 这是个好主意,但 setName() 和 getName() 解决了我的问题 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2012-03-24
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多