简而言之:如何在eventHandler中访问传递给GUI构造函数的参数?
更多细节: 我使用NetBeans和Swing编写Java插件。我创建了一个带有GUI的Jframe,其中包含一个JTextField。 JTextField的eventHandler将输入的值写入变量。在eventHandler中,我想接下来调用一个方法(),它使用另一个变量和,并将其传递给GUI的构造函数。
??如何获得对此变量的访问权限? NetBeans不会让我更改自动生成的eventHandler签名以包含我需要的GUI变量。这个eventHandler代码如下。
这是Java的第3周,如果这是非常基本的问题,请向我道歉 谢谢你 乙 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)
答案 0 :(得分:2)
我不确定我是否理解这个问题,但你应该能够添加一个成员变量:
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 :(得分:1)
正如@trashgod所说,它只是有效。但是,如果您尝试使用this
来引用变量(例如。this.answer
),它将会失败。
当侦听器正在执行时,this
引用侦听器的实例。要引用您的外部类,您需要通过在类前添加类名来限定访问权限:Myclass.this.answer
。
JLS将其称为Qualified this