2

我一直在网上搜索我的特定基本问题的答案,但找不到。我必须说我是编程新手,我必须为学校做这件事。我创建了一个 6/49 彩票的界面,您必须在其中单击 6 个 JButton,创建您的“幸运”号码。在我的界面 .java 中,我以这种方式创建了我的按钮:

JButton b;
        for (i = 1; i <= 49; i ++)
        {           
            String  s = String.valueOf(i);
            b = new JButton(s); 
            if (i % 2 == 0)            
                b.setForeground(new Color(3, 121, 184));
            else
                b.setForeground(new Color(228, 44, 44));            

         choixNumero.add(b);  

注意:“choixNumero”是一个 gridLayout ( 7 x 7 )

在另一个 .java 中,我正在为我的 JButton b 创建一个 actionListener,但这似乎不起作用。这是我写它的方式:

intProjet.b.addActionListener(new EcouteurCombinaison()); // where "intProjet" is my interface.java

这是我的 EcouteurCombinaison 的代码:

private int []  nums;
private int    nbRestant = 6;
private class EcouteurCombinaison implements ActionListener
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        if (nbRestant > 0)
        {
            //nums[nbRestant] = indexOf(e)); //will have to find a way to get index of the button pressed
            nbRestant --;
            intProjet.valNbRestant.setText("" + nbRestant);
        }
        else
        {
            JOptionPane.showMessageDialog(null, "Vous avez choisis vos 6 numéros\n Cliquer sur Soumettre pour valider", "Information", JOptionPane.INFORMATION_MESSAGE);   
        }    
    }
}

所以基本上,每次按下按钮时,我都会尝试将 JButton 的索引或值添加到向量中。然后我会将它发送到另一个 .java

我已经在我的代码中实现了其他 actionListener 并且它们工作正常( JButton、RadioButton、JComboBox )。我不明白为什么单击按钮时什么也没有发生。

我试图在不粘贴所有代码的情况下尽可能清楚地说明这一点。

编辑: ActionListener 仅适用于最后一个按钮( 49 )。我怎样才能让它听所有b按钮?

4

2 回答 2

2

您不断地重新分配该b循环中的值。当循环完成时,最后一个JButton被创建的被分配给它。然后,您将一个 ActionListener 绑定到该按钮,但不绑定其他按钮。我不确定您为什么希望一次调用将intProjet.b.addActionListener()其添加到所有 JButton。

于 2012-12-11T20:06:52.717 回答
2

intProjet.b指在循环中创建的最后一个按钮,因此结果是预期的。相反,您可以为每个按钮提供其自己的侦听器实例,如此处所示。

于 2012-12-11T20:07:34.453 回答