Eclipse 内容帮助在代码的某些部分不起作用



我正在使用Eclipse Juno,并且从未遇到过任何问题,直到它的内容助手仅在我代码的某些部分停止工作。下面的代码显示了我在说什么:

mWTBatch.setText("Here content assist works");
medCopyBtn.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        mWTBatch.setText(mRTBatch.getText());
        mWTExp.setText(mRTExp.getText());
        mWTName.setText(mRTName.getText());
        mWTQuantity.setText(mRTQuantity.getText());
        /* Here content assist is not working */
    }
});
mWTBatch.setText("Here it is working again");

这段代码就在我类的一个方法中。问题是它在类的方法中工作正常,但在对象(new ActionListener(){})内部,它返回"无默认建议"。当我使用"Ctrl+空格"或在我想获得建议的对象后键入"."时,它具有此行为。我已经在这里搜索了解决方案并在谷歌上搜索了它,但找不到解决方案。我已经尝试过:

  • Window->Preferences->Editor->Content Assist->Advanced并检查了Java Proposals。它没有用。我什至尝试自己检查它,而不仅仅是使用Restore Defaults.我还尝试了另一张桌子上的Java Proposals。无。最后,我尝试检查所有带有Java的字段。什么都没用。
  • 完全删除了我的工作区文件夹,创建了一个新文件夹并导入了我的项目。由于我的项目来自SVN存储库,因此我在"trunk"文件夹中使用了项目文件夹,但是导入时没有将文件夹的内容复制到工作区(我需要它在存储库中)。仍然没有,它继续错误。
  • 我将上述代码的相同情况复制到另一个不同项目的另一个类中,该项目也被导入到工作区,但其内容已复制到工作区。内容有助于worked那个。
  • 然后,我用上面的原始代码重新导入了该项目,但这次将其内容复制到工作区(这意味着它与SVN存储库不再相关)。它didn't work
  • 我还检查了ctrl+space是否绑定到 Eclipse 设置上的内容辅助,没问题。我还检查了它是否与Windows 7语言栏的高级键设置无关。我在互联网上看到这可能是问题,但这不是我的情况。
  • 我什至在工作区上创建了一个新的 Java 项目,并从旧项目中一一复制了.java文件,手动设置了所有构建路径,最终它仍然不起作用。

对于上述所有前四种情况,我还清理了项目并关闭并重新打开了它们,不要忘记在每次操作后刷新它。 谁能告诉我如何解决这个问题?我想找到解决这个问题的方法,这样其他人可能不会像我一样在 2 天内使用它。我认为我的问题很重要,因为我在这里收集了许多通过谷歌搜索问题和从 StackOverflow 找到的可能的解决方案,但没有解决它。

前几天我偶然发现了这个问题,在看到这篇文章后,我想我必须忍受它。

但是,我确实发现了一个围绕它的"黑客":

mWTBatch.setText("Here content assist works");
medCopyBtn.addActionListener(   //<---------------------- Problem arises because we're inside a function declaration ...
    new ActionListener()
    {   // <--------------------------------------------- ... yet we're trying to write a function
        public void actionPerformed(ActionEvent e)
        {
            /* Here content assist is not working */
        }
    }
);
mWTBatch.setText("Here it is working again");

从内容助手的角度来看,这是完全错误的,所以我们需要给它一点帮助:

mWTBatch.setText("Here content assist works");
medCopyBtn.addActionListener(
    new ActionListener()
        // <--------------------------------------------- CURLY BRACKET MISSING
        public void actionPerformed(ActionEvent e)
        {
            /* Here content assist IS WORKING */
        }
    }
);
mWTBatch.setText("Here it is still working");

这显然会在编译时给你一个错误,但它让你可以完全访问函数声明其余部分的内容辅助。此外,从函数声明中删除哪个大括号并不重要,只要它是左大括号即可。

还有一点,如果您像我上面所做的那样只删除开始的大括号,那么在大多数情况下,eclipse 不会自动添加另一个结束大括号(因为当您输入新的开始大括号时,您已经平衡了大括号的开始 vr 关闭)。您也可以通过删除右大括号来解决此问题,但是您必须记住将两个大括号放回原处。

希望有助于这个问题在过去一年中获得的 1165 次观看=)

在开始菜单上搜索"更改显示语言"。"更改键盘">查看"常规">"已安装的服务"下是否有任何非英语键盘。如果您不仅有英语,那么按 Ctrl+空格键会将焦点从 Eclipse 更改为任务栏上的语言选择器。如果这是您的问题,请从列表中删除任何其他键盘语言。

相关内容

  • 没有找到相关文章

最新更新