2

我正在开发的这个应用程序有三个单选按钮,但我需要打开 JFrame 并选择其中一个,另外两个不选择。

在 JFrame 加载后,我调用以下方法:

private void initJRadio() {
    jRadioButton1.setSelected(false);
    jRadioButton2.setSelected(true);
    jRadioButton3.setSelected(false);
}

但是在加载 JFrame 时出现以下异常:

StockJFrame.initJRadio 的线程“AWT-EventQueue-0”java.lang.NullPointerException 中的异常(StockJFrame.java:139)

其中 StockJFrame 是类名,139 是“jRadioButton1.setSelected(false);”的行号

在此类的 Source 窗格中,Netbeans 添加了以下行:

jRadioButton1 = new javax.swing.JRadioButton();
jRadioButton2 = new javax.swing.JRadioButton();
jRadioButton3 = new javax.swing.JRadioButton();

jRadioButton1.setText(/*label value*/);
jRadioButton1.setToolTipText(/*some tooltip text*/);
jRadioButton1.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        jRadioButton1ActionPerformed(evt);
    }
});

jRadioButton2.setText(/*label value*/);
jRadioButton2.setToolTipText(/*some tooltiptext*/);
jRadioButton2.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        jRadioButton2ActionPerformed(evt);
    }
});

jRadioButton3.setText(/*label value*/);
jRadioButton3.setToolTipText(/*some tooltip text*/);
jRadioButton3.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        jRadioButton3ActionPerformed(evt);
    }
});

如何正确设置?

4

1 回答 1

2

在您的代码中的某个时刻,jRadioButton1(和其他)必须(它们可能已经)通过jRadioButton1 = new javax.swing.JRadioButton().

如果我没记错的话,NetBeans 生成的代码默认情况下会在一个名为initComponents(). 此外,initComponents()通常在构造函数中调用。

找出初始化发生的位置(initComponents()或其他地方)并确保initJRadio()仅 在此之后调用。

更新:

发布更多代码后,您可以在initJRadio()粘贴的最后一个命令之后立即调用。(即,jRadioButton3.addActionListener(new ... });)。

PS.:java.lang.NullPointerException意思是你的对象还null没有被初始化,也就是如上所述,它还没有被初始化。

于 2013-04-11T15:01:59.363 回答