我的麻烦来自尝试记录选择哪个数组。如图所示,如果我有一个由5个元素组成的数组,则记录选择了第三个元素。在上下文中,我有2个不同的数组,每个数组包含10个元素;一个数组由整数(称为money)组成,另一个数组由JButtons组成。
public class Game extends JFrame {
JPanel cases = new JPanel(new GridLayout(2, 5)); //Section containing game cases
JButton[] caseButton = new JButton[10]; // Declaration of the
String gameCase[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; // case buttons
int[] money = {1, 2, 5, 10, 100, 1000, 5000, 10000, 20000, 30000}; //money values
}
public void StartGame() {
Shuffle(money); //Shuffle the money
//Initialising case buttons
for (int i = 0; i < caseButton.length; i++) {
caseButton[i] = new JButton(gameCase[i]);
cases.add(caseButton[i]);
caseButton[i].setPreferredSize(new Dimension(100, 100));
caseButton[i].setFont(new Font("Dialog", Font.BOLD, 35));
caseButton[i].setForeground(new Color(255, 215, 0));
caseButton[i].setActionCommand(gameCase[i]);
}
Money数组在程序开始时进行了改组,以允许每次运行时使用不同的顺序。 我想知道的是,当选择了这些JButton之一时,如何记录选择了哪个Array元素?这样,我便可以使用相应的货币数组进行处理。 (例如,选择了第7个JButton,然后我想将JButton的文本更改为第7个货币数组中保存的数字。) 帮助将不胜感激。这将在下周到期,还有很多事情要做。
答案 0 :(得分:1)
我建议创建一个自定义按钮类,以保存money
数组中相应值的索引。例如:
public class MyButton extends JButton {
private int moneyIndex;
public MyButton(String text, int moneyIndex){
super(text);
this.moneyIndex = monexIndex;
}
public int getMoneyIndex(){
return moneyIndex;
}
}
然后,您可以像以前一样创建一个按钮,但是将货币索引传递给它:
for (int i = 0; i < caseButton.length; i++) {
// I suspect you want the moneyIndex to match the index of the button
caseButton[i] = new MyButton("?", i);
cases.add(caseButton[i]);
// These can be moved to the custom button class if all MyButtons have these customizations
caseButton[i].setPreferredSize(new Dimension(100, 100));
caseButton[i].setFont(new Font("Dialog", Font.BOLD, 35));
caseButton[i].setForeground(new Color(255, 215, 0));
// Set this class as the action listener
caseButton[i].setActionListener(this);
}
然后,在您的动作侦听器中(假设您的主类已经扩展了ActionListener
),您可以访问moneyIndex变量:
public void actionPerformed(ActionEvent e){
// Get the source of the click as a MyButton
MyButton source = (MyButton) e.getSource();
// Get the moneyIndex of the source button
int moneyIndex = source.getMoneyIndex();
// Update the button's text according to the moneyIndex
source.setText(Integer.toString(money[moneyIndex]));
}
此方法的优点是索引由按钮存储,因此您无需搜索所有按钮即可查看已按下的按钮。随着您拥有的按钮数量的增加,这一点尤为重要,但这是任何大小的考虑。
此外,当该项目变得更加复杂时,此方法将使您的生活更加轻松,因为每个按钮都可以存储特定于它的信息,而无需一堆数组或操作命令。
答案 1 :(得分:0)
替代自定义按钮类解决方案,您可以将按钮及其索引和在动作处理程序上保留在地图中,并根据源获取索引:
echo convert_accented_characters("Ķas-noķika"); //Output Kas-nokika