将JButtons与数组相关联?

时间:2016-08-30 10:35:15

标签: java arrays collections jbutton

我正在用Java创建配对游戏。 我的想法是,我有100个JButtons,从1到100,并且所有这些都分配了从1到50(2x次)的数字。当我点击任何按钮时,它应该显示分配给该按钮的编号。并且玩家必须找到具有相同编号的第二个按钮。如何将这些数字分配给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);          

}

}

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

1 个答案:

答案 0 :(得分:0)

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

public class PairButton extends JButton {

private final int myRealValue;

public PairButton(int myRealValue){
    this.myRealValue = myRealValue;
}

public int getMyRealValue() {
    return myRealValue;
}

}