将变量从valuechanged方法转移到actionperformed

时间:2014-06-14 10:25:54

标签: java user-interface jbutton jlist

我需要将一个变量从valuechanged方法转移到actionperformed方法。我需要传递的变量是“index”,因此我可以将它用作数组的索引。有人可以告诉我该怎么做吗?

public class ListHandler implements ListSelectionListener 
    {
        @Override
        public void valueChanged(ListSelectionEvent event)
                    {

                            if (event.getSource().equals("Check")) 
                            {

                                int index = material.getSelectedIndex();//VARIABLE      NEEDED TO BE TRANSFERED

                            }
                    }
    }

    public class ButtonHandler implements ActionListener
    {

                    @Override
                    public void actionPerformed(ActionEvent event)
                    {

                        v=Double.parseDouble(vtext.getText());
                        e1=E1(v, v1[index], v2[index]);
                        e2=E2(v, v1[index], v2[index]);
                        e1text.setText(Double.toString(e1));
                        e2text.setText(Double.toString(e2));

                    }


    }

2 个答案:

答案 0 :(得分:0)

您只需要更改变量的范围。将其作为实例成员。这解决了你的问题。

截至目前index范围仅限于方法valueChanged()。因此,请将声明移至实例级别,并在valueChanged()方法中指定值。因此,您也可以在index方法中使用相同的actionPerformed()变量。

答案 1 :(得分:0)

这是非常简单的设计。

将动作侦听器的代码移动到如下所示的方法中,以传递索引。

public void doActionPerformed(int index){
    // action performed code goes here
    // check the index value before doing any operation on it
}

并简单地从

中调用它
if (event.getSource().equals("Check")) {
      int index = material.getSelectedIndex();
      doActionPerformed(index);
}

@Override
public void actionPerformed(ActionEvent event){
     doActionPerformed(-1);
}

修改

你可以尝试一种非常简单的方式

@Override
public void actionPerformed(ActionEvent event){
     int index = material.getSelectedIndex();
     ...
}