NetBeans 7.0.1中的“组件无法示例化”

4si2a6ki  于 2023-08-05  发布在  其他
关注(0)|答案(3)|浏览(93)

我一直在定制JTextArea和JTable。为此,我向项目中添加了一个新的Java类,然后声明它扩展了所需的特定类(在我的示例中,扩展了JTextArea或JTable)。
我一直在正常使用它,将这些新类添加到JDialogs和JInternalFrames中没有任何问题。我这样做只是拖动到我的JDialog或JInternalFrame.
但最近,由于某种原因,我开始收到这些错误消息:
无法示例化组件。请确保它是JavaBeans组件。
接受旧的定制类的JInternalFrame仍然接受它们。但是,如果我尝试添加新的定制类,它会给我错误消息,然后,它开始向旧的定制类显示相同的消息...
有件很奇怪的事发生了。我将一个(以前)定制类的相同代码复制到一个新类(当然,更改了类的名称)。然后我试着把它添加到我的JInternalFrame。它给了我错误信息!如果在此之前,我尝试添加相同的自定义类(使用原始名称),它会正常添加类...
真烦人我该如何解决?
(我使用的是NetBeans 7.0.1)
原来是数组访问超出范围的问题……我已经习惯了关于这种事情是自动的错误消息...我刚开始用Java编程。

hfsqlsce

hfsqlsce1#

非常感谢你的回答,但如果你想知道原因,在这里。
这通常出现在两个位置:
1.组件上的重写方法。
1.在组件上使用一个普通方法。
举例来说:

package UI.Components;

public class LabelComponent extends javax.swing.JLabel {

    private javax.swing.JLabel label;

    public TextFieldComponent() {
        label = new javax.swing.JLabel(_label);
        add(label);
    }

    @Override
    public void setText(String text) {
        label.setText(text);
    }
}

字符串
方法setText(String text)在超类构造函数中被调用,然后在这个方法上使用的(label)变量尚未初始化的情况下,将调用重写的新方法,因此将抛出一个java.lang.NullPointerException
解决方法:

  1. try ... catch
@Override
 public void setText(String text) {
     try {
         label.setText(text);
     } catch (Exception e) {
     }
 }


1.检查:
在声明中使用空初始化

private javax.swing.JLabel label = null;


然后检查方法

@Override
 public void setText(String text) {
     if(label != null)
         label.setText(text);
 }


1.对声明使用初始化:

private javax.swing.JLabel label = label = new javax.swing.JLabel();


然后在构造函数中使用setText方法

label.setText(_label);


注意事项:
在原因(2)的情况下,组件上的一个正常方法,它与(1)相同,但您可以在初始化变量之前调用该方法,或者在调用该方法之前将null赋给变量,等等,并且可以通过相同的方式解决。

fwzugrvs

fwzugrvs2#

我遇到过类似的问题,但在不同的背景下。
我有两个独立的项目,一个是Swing构建的用户界面,另一个是类库。
我向类库中添加了一个类,转到用户界面,并以现有的自定义JFrame的形式将这个新添加的类从库中实现到Swing界面项目中。那么现在发生在我身上的是什么呢?当然,类加载器找不到类,因为库项目需要编译。这个问题通过编译来解决。

iibxawm4

iibxawm43#

我也面临着同样的问题,在网上搜索了一番后,我找到了这个问题的解决方案。我对这个问题的原因以及如何发生没有深刻的理解,但我可以与大家分享我找到的解决方案。
当你看到这样的错误信息时,转到菜单 ViewIDE Log或者你可以从windows_user_Home\\.netbeans\7.0\var\log打开日志。
在日志中,您必须找到您得到错误消息,例如,

INFO [org.netbeans.modules.form.BeanSupport]: Cannot create default instance of: test.Application1
java.lang.NullPointerException
    at test.Application1.initLabel(Application1.java:906)

字符串
所以问题出现在 .java 文件的第906行。打开该文件并注解这些行,然后您就能够克服这个问题。
您可以将组件添加到窗体或jInternalFrame或...
添加组件后,可以再次取消注解这些行。只需 * 清理 * 和 * 构建 * 你的项目。

相关问题