我正在做一个小数学游戏,其中包括在1-9或10-99之间创建一个随机编号的数字序列,然后将数字>分开。 10然后创建一个序列。例如,我有4个数字要生成,我生成1,3,5,10。然后我将数字10分开并将数字连接在一起,如下所示:1 3 5 1 0.现在游戏的目标是重新组合数字一起得到总和。所以我必须点击1,3,5,然后点击1和0,同时保持鼠标按下以获得10.最后,我检查按下的总和与原始总和,以找出它是否是正确的答案。
无论如何,我在MouseEvent和按钮上遇到了一些麻烦。首先,我随机创建数字,然后将它们放在一个int数组中。之后,我接受该数组并将其切换为String,以便将它们放在Button上。然后,当我创建我的按钮时,我得到String并且我执行String.charAt(i)以获得我的序列的单个数字。我在按钮上添加了MouseListener,然后将我的按钮添加到面板中。
当我按下按钮时,我想得到按钮上数字的值。我尝试过getSource(),getText()或其他方法,但它没有用。我应该为此使用ActionListener还是使用MouseListener?
这是我的代码的一些片段:
fixedSequence is the String version of the number sequence
GameLogic is the class where I do the logic of the game
sequencePanel is the JPanel that shows the buttons of the sequence
创建int数组序列:
private void createSequence(int cutNumber) {
//cutNumber is the number of digits in my sequence
for(int i = 0; i < cutNumber; i++) {
numberSequence[i] = numberGenerator();
}
}
从我的int数组中创建String数组:
private void sequenceToString() {
StringBuilder builder = new StringBuilder();
for(int value: numberSequence) {
builder.append(value);
}
fixedSequence = builder.toString();
}
现在用按钮创建序列:
private void createASequenceButton(char c, Container container) {
JButton button = new JButton(String.valueOf(c));
button.setAlignmentX(LEFT_ALIGNMENT);
button.addMouseListener(new SequenceButtonListener());
container.add(button);
}
private void addNumberSequence() {
//GameLogic is where I create the number sequence and where I do the
//logic of the game
for(int i=0; i < GameLogic.getFixedSequence().length(); i++) {
createASequenceButton(GameLogic.getFixedSequence().charAt(i),
sequencePanel);
}
}
现在为MouseListener部分:
private class SequenceButtonListener implements MouseListener {
public void mousePressed(MouseEvent event) {
//This is where I want to get the value in int or string of
//the button I pressed so I can do my calculation with it
}
}
我对我的方式有一些看法,如果我能以更简单的方式做到这一点,或者它只能用ActionListener而不是MouseListener来实现。
感谢您的时间,
卡尔