将监听器添加到JButton数组;

时间:2013-04-23 15:07:22

标签: java swing jbutton actionlistener actionevent

我有以下代码,可以在按钮点击时创建一个JButton数组。 Ope[]在课堂上公开声明。我有问题,我有空指针。也就是说它不会在循环中打印第二个ie。不进入内部迭代。 请告诉我如何处理数组的监听器。提前谢谢。

for( int i=0,y=30; i<counter;i++,y+=15 )
{

        open[i]=new JButton( "Open" );
        open[i].setBounds( 380, y, 70, 15 );
        open[i].addActionListener( this );
        panelDisplay.add (open[i] );

        System.out.println(""+i);
}

actionPerformed函数中的事件处理如下:

for( int j=0; j<open.length; j++ )
{
    System.out.println("1st in a loop"+j);

    if( ae.getSource() != null )
    {
        if( ae.getSource() == open[j] )
        {
            System.out.println("2nd in a loop" +j);
            int id;
            String stringid;
            System.out.println("open of"+j+"is clicked");

            stringid = ""+table.getValueAt(j, 0);
            id = Integer.parseInt(stringid);
            fetchData(id);
            //ae.getSource().equals(null);
        }
    }

}

1 个答案:

答案 0 :(得分:0)

JButton从Component继承“setName”方法。因此,如果您在初始化时在Button上设置名称

        open[i]=new JButton( "Open" );
        open[i].setBounds( 380, y, 70, 15 );
        open[i].setName("Button"+i);
        open[i].addActionListener( this );
        panelDisplay.add (open[i] );

        System.out.println(""+i);

你可以在事件处理中找到按下按钮

    int buttonNumber = Integer.parseInt(ae.getSource().getName().replace("Button",""))
    //... do eventhandling for Button["buttonNumber"]