我正在用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版本:)
答案 0 :(得分:0)
您可以通过创建扩展JButton的自己的类来分隔测试值,例如:
public class PairButton extends JButton {
private final int myRealValue;
public PairButton(int myRealValue){
this.myRealValue = myRealValue;
}
public int getMyRealValue() {
return myRealValue;
}
}