2016-05-10 4 views
0

У меня есть кнопка представить (и слушатель действия), который проверяет, является ли число вставлено в Futoshiki головоломки является законным (проверка 2D-массив для дупликации и т.д.)Кнопка ActionListener вызывает другой слушатель действия в том же классе

В другой метод У меня есть реальная сетка с прослушивателем действий, который получает числа и вставляет их в 2D-массив.

JButton acction слушатель

JButton isRight = new JButton("Check My Answer"); 
isRight.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 

    if (!(puzzle.isLegal())) { 
     JOptionPane.showMessageDialog(FutoshikiFrame.this, 
     puzzle.getProblems(), 
     "You made a mistake!", 
     JOptionPane.INFORMATION_MESSAGE); 
    } else { 
     JOptionPane.showMessageDialog(FutoshikiFrame.this, 
     "YOU WIN!", 
     "YES THATS FINE", 
     JOptionPane.INFORMATION_MESSAGE); 
    } 
    puzzle.printProblems.clear(); 

    } 
}); 

Сетка действие слушатель

public void keyReleased(KeyEvent e) { 
    String getInsertedValue = Emptysquare.getText(); 
    int getInsertedIntValue = Integer.parseInt(getInsertedValue); 
    setSquareValue(r, c, getInsertedIntValue); 
    System.out.print(getSquareValue(r, c)); 
} 

Есть ли способ, что я могу получить доступ к действиям слушателя keyReleased от JButton, так что в основном «представляет» содержимое сетки и затем проверяет, является ли его законным?

ответ

0

Конечно, либо просто сохранить ссылку на эти действия слушателя и вызывать keyReleased метод со значением null или реорганизовать из содержания keyReleased к собственному способу и вызвать этот метод из обоего слушателей.

+0

Как я могу назвать метод 'keyReleased'? Это метод _method_ внутри моего метода _setGrid_. Извините заранее, если это плохо. – LogicGates

+0

У вас наверняка нет метода внутри метода, поскольку это невозможно. Возможно, у вас есть метод в анонимном классе внутри метода. Но, как я уже сказал, eihter присваивает экземпляр этого анонимного класса некоторой переменной, к которой имеет доступ другая область, или информацию о содержимом метода в метод, к которому имеют доступ оба метода. – Vampire

0

Хотя было дано еще 2 метода, вот еще один способ, которым вы могли бы это сделать, но я не уверен, что лучше всего использовать.

public class YourClass { 
    JButton isRight; 

    public YourClass() { 
     this.isRight = new JButton(); 

     this.isRight.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       YourClass.this.isRight.getKeyListeners()[0].keyReleased(null); 

       //Other action related code 
      } 
     }); 

     isRight.addKeyListener(new KeyListener() { 
      public void keyReleased(KeyEvent e) { 
       //Key related code 
      } 

      //Other required key listener methods 
     }); 
    } 
} 
Смежные вопросы