我一直在定制JTextArea和JTable。为此,我向项目中添加了一个新的Java类,然后声明它扩展了所需的特定类(在我的示例中,扩展了JTextArea或JTable)。
我一直在正常使用它,将这些新类添加到JDialogs和JInternalFrames中没有任何问题。我这样做只是拖动到我的JDialog或JInternalFrame.
但最近,由于某种原因,我开始收到这些错误消息:
无法示例化组件。请确保它是JavaBeans组件。
接受旧的定制类的JInternalFrame仍然接受它们。但是,如果我尝试添加新的定制类,它会给我错误消息,然后,它开始向旧的定制类显示相同的消息...
有件很奇怪的事发生了。我将一个(以前)定制类的相同代码复制到一个新类(当然,更改了类的名称)。然后我试着把它添加到我的JInternalFrame。它给了我错误信息!如果在此之前,我尝试添加相同的自定义类(使用原始名称),它会正常添加类...
真烦人我该如何解决?
(我使用的是NetBeans 7.0.1)
原来是数组访问超出范围的问题……我已经习惯了关于这种事情是自动的错误消息...我刚开始用Java编程。
3条答案
按热度按时间hfsqlsce1#
非常感谢你的回答,但如果你想知道原因,在这里。
这通常出现在两个位置:
1.组件上的重写方法。
1.在组件上使用一个普通方法。
举例来说:
字符串
方法
setText(String text)
在超类构造函数中被调用,然后在这个方法上使用的(label)变量尚未初始化的情况下,将调用重写的新方法,因此将抛出一个java.lang.NullPointerException
。解决方法:
try
...catch
:型
1.检查:
在声明中使用空初始化
型
然后检查方法
型
1.对声明使用初始化:
型
然后在构造函数中使用setText方法
型
注意事项:
在原因(2)的情况下,组件上的一个正常方法,它与(1)相同,但您可以在初始化变量之前调用该方法,或者在调用该方法之前将null赋给变量,等等,并且可以通过相同的方式解决。
fwzugrvs2#
我遇到过类似的问题,但在不同的背景下。
我有两个独立的项目,一个是Swing构建的用户界面,另一个是类库。
我向类库中添加了一个类,转到用户界面,并以现有的自定义JFrame的形式将这个新添加的类从库中实现到Swing界面项目中。那么现在发生在我身上的是什么呢?当然,类加载器找不到类,因为库项目需要编译。这个问题通过编译来解决。
iibxawm43#
我也面临着同样的问题,在网上搜索了一番后,我找到了这个问题的解决方案。我对这个问题的原因以及如何发生没有深刻的理解,但我可以与大家分享我找到的解决方案。
当你看到这样的错误信息时,转到菜单 View → IDE Log或者你可以从
windows_user_Home\\.netbeans\7.0\var\log
打开日志。在日志中,您必须找到您得到错误消息,例如,
字符串
所以问题出现在 .java 文件的第906行。打开该文件并注解这些行,然后您就能够克服这个问题。
您可以将组件添加到窗体或jInternalFrame或...
添加组件后,可以再次取消注解这些行。只需 * 清理 * 和 * 构建 * 你的项目。