我需要将一个变量从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));
}
}
答案 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();
...
}