有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将变量从valuechanged方法传输到actionperformed

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

  1. # 1 楼答案

    您只需要更改变量的作用域。使其成为实例成员。这就解决了你的问题

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

  2. # 2 楼答案

    它的设计非常简单

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

    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();
         ...
    }