JButtons和鼠标监听器或动作监听器

时间:2015-11-20 02:22:26

标签: java swing mouseevent jbutton mouselistener

我正在做一个小数学游戏,其中包括在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来实现。

感谢您的时间,

卡尔

0 个答案:

没有答案