2017-04-27 8 views
0

何らかの理由で、私のコードに何が間違っているかを知ることができません。基本的にJTable内のJCheckboxの状態を取得中

  1. I 6の最大に
  2. インクリメントこの場合には2に初期化カウンタ(合計)を有し、各時間JCheckboxを(この場合は4)をチェックし、あまりにも多くの場合にメッセージをスロークリックした
  3. まず、合計6個をチェックすると、最初にヌルポインタがスローされます。 6つ以上のチェックボックスが選択されている場合は正常に機能し、複数のボタンをクリックして6に減らします。

誰かが私の頭を悩ませているところに私を案内できますか?どうもありがとうございました。

public void panelThree(JTable user, JButton save, JButton logout, JButton exit, int j) { 
    System.out.println("J in external main is: " + j); 
    save.addActionListener(new ActionListener() { 
     boolean arr[] = new boolean[user.getRowCount()]; 

     public void actionPerformed(ActionEvent e) { 
      int total = j; 
      System.out.println("Total in listener is: "+total); 
      System.out.println("No of rows: " + user.getRowCount()); 
      for (int z = 0; z < arr.length; z++) { 
       arr[z] = false; 
      } 
      for (int i = 0; i < user.getRowCount(); i++) {     
       if (Boolean.valueOf(user.getModel().getValueAt(i, 3).toString()) == true) { 
        if (arr[i] == false) { 
         arr[i] = true; 
         total++; 
        } 
       } else { 
        if (arr[i] == true) { 
         arr[i] = false; 
         total--; 
        } 
       } 
      } 
      System.out.println("Total is: " + total); 
      if (total > 6) { 
       JOptionPane.showMessageDialog(null, "Please choose up to a maximum of " + (6 - j) + " modules"); 
      } else { 
       int reply = JOptionPane.showConfirmDialog(null, "Are you sure to enroll in these modules?", "Yes", JOptionPane.YES_NO_OPTION); 
       if (reply == JOptionPane.YES_OPTION) { 
        JOptionPane.showMessageDialog(null, "Enrollment Successful"); 
       } 
      } 
     } 
    }); 
} 

ラインif (Boolean.valueOf(user.getModel().getValueAt(i, 3).toString()) == true)は、私は、コンソールを作っています、すべての編集のすべてのエラーの原因であると思われる行でNULLポインタがあなたのテーブルには、null値が含まれているように思わ

+0

[NullPointerExceptionとは何ですか?それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) –

+0

私の答えは –

答えて

1

言います。だからあなたはあなたの小切手でそれを考慮する必要があります。このような何か:

if (user.getModel().getValueAt(i, 3) == Boolean.TRUE) 

私の提案はSSCCEを提供私たちはまた、あなたの問題を再現することができますしてください動作しない場合。

+0

です。[MCVE](https://stackoverflow.com/help/mcve)をお勧めしますか? –

+0

@ Mr.Polywhirl SSCCEと同じですが、リンクはもっと短いです:)。 –

+0

@SergiyMedvynskyyこの構造はよりよく見えますか? – noobProgrammer

関連する問題