Перенести переменную из метода 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()
метод также.