Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从vector创建的JButton上的actionListener_Java_Swing_Vector_Jbutton_Actionlistener - Fatal编程技术网

Java 从vector创建的JButton上的actionListener

Java 从vector创建的JButton上的actionListener,java,swing,vector,jbutton,actionlistener,Java,Swing,Vector,Jbutton,Actionlistener,我一直在网上搜索我具体基本问题的答案,但找不到答案。 我必须说我是编程新手,我必须为学校做这件事。 我已经创建了一个6/49彩票的界面,在这里你必须点击6个按钮,创建你的“幸运”号码。在我的interface.java中,我通过以下方式创建了我的按钮: JButton b; for (i = 1; i <= 49; i ++) { String s = String.valueOf(i);

我一直在网上搜索我具体基本问题的答案,但找不到答案。 我必须说我是编程新手,我必须为学校做这件事。 我已经创建了一个6/49彩票的界面,在这里你必须点击6个按钮,创建你的“幸运”号码。在我的interface.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);  
这是我的密码:

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按钮?

您在该循环中不断重新分配
b
的值。循环完成后,将为其指定要创建的最后一个
JButton
。然后将ActionListener绑定到该按钮,但其他按钮都不绑定。我不知道为什么您希望通过调用
intProjet.b.addActionListener()
将其添加到所有jbutton中。

您在该循环中不断重新分配
b
的值。循环完成后,将为其指定要创建的最后一个
JButton
。然后将ActionListener绑定到该按钮,但其他按钮都不绑定。我不知道为什么您希望通过调用
intProjet.b.addActionListener()
将其添加到所有JButton中。

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

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

可能EcoteurCombinaison.actionPerformed会引发异常。控制台中是否有任何错误消息?另外,那是什么
indexOf(e))
?我在运行它时没有错误。唯一的“坏”部分是:nums[nbRestant]=indexOf(e));所以我把//放在前面,一切都很好。indexOf(e))是一种尝试,它试图获取按下的JButton的索引,将索引添加到向量nums[]是的,这是不好的,因为它不是正确的Java。如果我们忘记了indexOf(e)),如果我在EcoutEurCombination中插入JOPmessageDialog,它就不会出现。似乎无法识别JButton b。可能EcoteurCombinaison.actionPerformed引发异常。控制台中是否有任何错误消息?另外,那是什么
indexOf(e))
?我在运行它时没有错误。唯一的“坏”部分是:nums[nbRestant]=indexOf(e));所以我把//放在前面,一切都很好。indexOf(e))是一种尝试,它试图获取按下的JButton的索引,将索引添加到向量nums[]是的,这是不好的,因为它不是正确的Java。如果我们忘记了indexOf(e)),如果我在EcoutEurCombination中插入JOPmessageDialog,它就不会出现。看起来JButton b不被识别。这很有道理。我正在阅读您的代码并试图理解所有内容。感谢您指出为什么它只使用最后一个JButton。我理解您的大部分方法,但我不知道如何使用它。我的侦听器和按钮不在同一个java文件中。我是否可以将JButton引用到我的另一个java文件侦听器,并且每次生成它时都引用它?对不起,如果是模糊的。(英语不是我的主要语言)是的,您的按钮可以访问
EcouteurCombinaison
。也要考虑。这是感觉。我正在阅读你的代码,试图了解一切。感谢您指出为什么它只使用最后一个JButton。我理解您的大部分方法,但我不知道如何使用它。我的侦听器和按钮不在同一个java文件中。我是否可以将JButton引用到我的另一个java文件侦听器,并且每次生成它时都引用它?对不起,如果是模糊的。(英语不是我的主要语言)是的,您的按钮可以访问
EcouteurCombinaison
。也要考虑。我很难将它提到所有的B元素。初学者的错误。我会记住,它将涉及所有b元素。初学者的错误。我会记得的
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);   
        }    
    }
}