eventHandler, определение и доступ к параметрам (Java Swing Netbeans) - PullRequest
1 голос
/ 18 февраля 2011

короче: как я могу получить доступ к параметру, переданному в конструктор GUI в eventHandler?

подробнее: я использую NetBeans и Swing для написания плагина на Java.Я создал Jframe с графическим интерфейсом, который включает в себя JTextField.EventHandler для JTextField записывает значение, введенное в переменную.В рамках eventHandler я хочу затем вызвать метод (), который использует эту переменную и другую, которая была передана в конструктор графического интерфейса.

??Как я могу получить доступ к этой переменной?NetBeans не позволит мне изменить автоматически сгенерированную сигнатуру eventHandler, чтобы она включала нужную мне переменную GUI.Этот код событияHandler ниже.

Это 3-я неделя Java для меня, поэтому извиняюсь, если это очень простой вопрос
спасибо
B PS спасибо за сайт, он уже ответил много другие вопросы.

private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {  // *** no edit allowed to signature (greyed by NetBeans)                                          
    System.out.println( "textField2: " +  jTextField1.getText() );
    String s = jTextField2.getText();
    try {
        numIter = Integer.parseInt(s.trim());
        testMethod(numIter, paramPassedIntoGUIconstructor); 
// ?? how to get paramPassedIntoGUIconstructor?? <<-- key question
    } catch (NumberFormatException nfe) {
        JOptionPane.showMessageDialog(Cytoscape.getDesktop(),
                "That's not an integer!", "NumberFormatException",1);
    }
} // *** no edit allowed (greyed by NetBeans)  

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011

Я не уверен, что понимаю проблему, но вы должны иметь возможность добавить переменную-член:

private final Integer answer;
// Variables declaration - do not modify
...
// End of variables declaration

Инициализируйте ее в своем конструкторе:

public MyClass(Integer iWantAccessToThis) {
    initComponents();
    answer = iWantAccessToThis;
}

Доступ, ad lib :

private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {                                             
    ...
    System.out.println(this.answer);
    ...
}                                            
1 голос
/ 18 февраля 2011

Как заметил @trashgod, он просто работает. Однако, если вы попытаетесь использовать this для ссылки на переменную (например, this.answer), произойдет сбой.

Когда слушатель выполняется, this относится к экземпляру слушателя. Чтобы сослаться на ваш внешний класс, вам нужно квалифицировать доступ, добавив имя класса следующим образом: Myclass.this.answer.

JLS называет его Квалифицированным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...