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();
  }

}

10-06 09:44