无法访问提供程序类的方法

时间:2010-07-11 04:12:18

标签: java netbeans

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

1 个答案:

答案 0 :(得分:1)

这看起来像是一个范围问题。 fff在构造函数中声明为本地。在navButtonActionPerformed中,它根本没有声明。这可能是由于您剪切代码的方式,但如果错误消息暗示未声明fff,请尝试在类级别声明“Browser fff”。例如,

class BrowserTopComponent ... {

  Browswer fff = new Browser();

  BrowserTopComponent() {
    initComponents();
  }

  private void navButtonActionPerformed(ActionEvent evt) {
    fff.navigateTo();
  }

}