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的构造函数中时,它工作正常!那么为什么我不能在构造函数之外使用它呢?
在我的浏览器模块(加载第三方JAR)中,我有以下类:
package my.app.browser
import bunch.of.3rd.party.stuff
public class Browser1 {
private String url;
public void navigateTo() {
System.out.println(url);
}
}
答案 0 :(得分:1)
这看起来像是一个范围问题。 fff在构造函数中声明为本地。在navButtonActionPerformed中,它根本没有声明。这可能是由于您剪切代码的方式,但如果错误消息暗示未声明fff,请尝试在类级别声明“Browser fff”。例如,
class BrowserTopComponent ... {
Browswer fff = new Browser();
BrowserTopComponent() {
initComponents();
}
private void navButtonActionPerformed(ActionEvent evt) {
fff.navigateTo();
}
}