2010-01-11 63 views
2

产品版本:NetBeans IDE 6.8(Build 200912041610) Java:1.6.0_17; Java HotSpot(TM)客户端VM 14.3-b01 系统:在x86上运行的Windows 7版本6.1; CP1252; EN_GB(NB)netbeans&java,resourceMap.getString返回null

你好,这里newbee java程序员,并想知道,如果有人可以帮助,我一直有一些问题,更新了图形用户界面在NetBeans桌面应用程序,下面是详细信息:


我目前的应用程序GUI工作得很好,一切都显示正确。

,当我通过增加从NetBeans工具箱中一个新的标签粘贴在我的表单更新的图形用户界面,并使用NetBeans预览功能,一切都看起来不错

然而,当我运行新的标签已经消失应用..

,试图了解我跑在调试模式下的应用程序,并通过自动生成的initComponents()代码

从调试加强,我相信这个问题来自这行代码的问题:

TEST_lbl.setText(resourceMap.getString("TEST_lbl.text")); // NOI18N 

这行代码之后执行TEST_lbl.setText等于空..

因此,当我运行的应用程序,因为它没有任何文本值显示标签消失...

我在记事本(.properties文件)中打开资源映射文件,并且在所有其他工作控件的条目中包含条目“TEST_lbl.text = jLabel1”...

所以属性文件具有正确的值,但resourceMap.getString不检索它

我可以解决此问题,从“所有资源”改变形式的“自动资源管理”选项设置为“关”

,结果这个改变将自动生成“的setText”代码行:

TEST_lbl.setText("jLabel1"); 

,使标签显示正确时,应用程序运行


我的第一个问题是,这是一个已知的bug?还是我做了一些愚蠢的事情,并意外地改变了一些设置?

如果这不是一个错误,我该如何更正问题而不更改资源管理设置?

如果这是一个错误,关闭自动资源管理的含义是什么?

感谢您的帮助, - GAZ

回答

1

我假设你NB(运行>运行主项目)下运行呢?

尝试一个干净的构建(运行>清理和生成主项目)。这通常会解决它。

这是构建系统结构的一个问题。

当您运行在一个干净的存储库(运行>运行主项目)项目:

  1. .class文件被写入到$项目/建设/班
  2. 非类文件被复制进入树
  3. 整个事情从那里运行。

工作正常。

如果“建设”项目(运行>生成主项目): 1. .class文件被写入到$项目/建设/班 2.非类文件复制到树 3整个事情卷成了一个jar文件。

这也很好。

不过,如果随后进行更改,并运行该项目,类文件和资源现在出现在两个地方:

  • 在建/班在dist
  • /项目的.jar

只要找到类文件,这就行得通。然而,资源首先在jar中找到。因此,在运行时,您的代码会在jar中找到过时的属性文件副本,而不是文件系统中的新文件。

此外:NB在查找资源时忽略大小写,但Sun的JVM不(不知道IcedTea)。所以,如果使用了错误的情况,NB可能会坚持该文件存在,但JVM将无法找到它。

+0

你的权利,当我最初挖掘周围我注意到在src目录中的属性文件,没有意识到在build目录中还有第二个属性文件。 是的,他们只在执行干净的操作时同步,干净后一切正常,我可以再次打开资源管理。 感谢您的深刻回复,非常感谢 受益于其他用户:如果您的标签正在消失,按钮正在缩小或变得扁平化,或者控件未保留其文本值等设置,那么很可能您有类似的问题。 – Gaz 2010-01-13 06:20:11