public final class BrowserTopComponent extends TopComponent implements ActionListener, ChangeListener, LookupListener{
public BrowserTopComponent() {
initComponents();
setName(NbBundle.getMessage(BrowserTopComponent.class, "CTL_BrowserTopComponent"));
setToolTipText(NbBundle.getMessage(BrowserTopComponent.class, "HINT_BrowserTopComponent"));
// setIcon(ImageUtilities.loadImage(ICON_PATH, true));
Browser1 fff = new Browser1();
associateLookup(Lookups.singleton(fff));
}
private Lookup.Result result = null;
@Override
public void componentOpened() {
result = Utilities.actionsGlobalContext().lookupResult(Browser1.class);
result.addLookupListener (this);
}
@Override
public void componentClosed() {
result.removeLookupListener (this);
result = null;
}
private void navButtonActionPerformed(java.awt.event.ActionEvent evt) {
fff.navgiateTo(); // NET BEAN COMPLAINS AT THIS LINE.
}
我不能使用fff.navigateTo()的任何可能原因;但是,当fff.navigateTo()在BrowserTopComponent的构造函数中时,它可以正常工作!那么,为什么不能在构造函数之外使用它呢?
在我的浏览器模块(加载第3方JAR)中,我具有以下类:
package my.app.browser
import bunch.of.3rd.party.stuff
public class Browser1 {
private String url;
public void navigateTo() {
System.out.println(url);
}
}
最佳答案
这看起来像一个范围问题。 fff在构造函数中本地声明。在navButtonActionPerformed中,根本没有声明它。这可能是由于您如何截断代码而引起的,但是如果错误消息暗示未声明fff,请尝试在类级别声明“浏览器fff”。例如,
class BrowserTopComponent ... {
Browswer fff = new Browser();
BrowserTopComponent() {
initComponents();
}
private void navButtonActionPerformed(ActionEvent evt) {
fff.navigateTo();
}
}