Перенести переменную из метода valuezed в actionperformed

Мне нужно передать одну переменную из valuechanged метод для actionperformed метод. Переменная, которую мне нужно передать, - это "индекс", так что я могу использовать его как индекс для массива. Может кто-нибудь сказать, пожалуйста, как это сделать?

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 ответа

Это очень простой дизайн.

Переместите код слушателя действия в метод, как показано ниже, передайте индекс.

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

Вам просто нужно изменить область видимости переменной. Сделайте это как член экземпляра. Это решает вашу проблему.

По состоянию на сейчас index область действия ограничена методом valueChanged(), Так что переместите объявление на уровень экземпляра и присвойте значение в valueChanged() метод. Так что вы можете использовать то же самое index переменная в actionPerformed() метод также.

Другие вопросы по тегам