2017-04-20 195 views
0

我遇到了null的問題,我實現了相同的代碼之前,它工作得很好,但我添加其他代碼後,它不工作..錯誤:在線程「AWT-EventQueue-0」中的異常java.lang.NullPointerException

這是錯誤的一部分:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at manager.flyer$13.mouseClicked(flyer.java:751) 
    at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270) 
    at java.awt.Component.processMouseEvent(Component.java:6536) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6298) 
    at java.awt.Container.processEvent(Container.java:2236) 
    at java.awt.Component.dispatchEventImpl(Component.java:4889) 
    at java.awt.Container.dispatchEventImpl(Container.java:2294) 
    at java.awt.Component.dispatchEvent(Component.java:4711) 

和我的代碼的一部分,其顯示的錯誤:

JButton btnNewButton_4 = new JButton("Add All"); 
      btnNewButton_4.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent e) { 

      int columnContainingPlanets =1 ; 
      for (int index =0 ; index < tableModel.getRowCount(); index ++){ 
      if (tableModel.getValueAt(index, columnContainingPlanets).equals("")) { 
      JOptionPane.showMessageDialog(panel_4, "Please Enter Discount Amount For All Items"); 

      return; }} 

我嘗試更換columnContainingPlanets=1columnContainingPlanets=0 也有錯誤:java.lang.NullPointerException

我會高興,如果有任何人知道的解決方案,因爲該錯誤突然出現,這是工作的好..

+0

參見[什麼是堆棧跟蹤,我怎麼可以用它來調試應用程序錯誤?(http://stackoverflow.com/q/3988788/418556)[什麼是空指針異常,以及如何解決呢(http://stackoverflow.com/q/218384/418556) –

+0

在flyer.java看行751 - 一些在該行是空的。 –

+0

@格雷格-449呀那是真實的,該行'如果(TableModel的。getValueAt(index,columnContainingPlanets).equals(「」))'所以,我需要顯示消息對話框時它爲空。 – sara

回答

0

我們不能調試一個NullPointerException你。您是唯一可以訪問您的代碼和應用程​​序中的數據的人。所以你是唯一可以解決問題的人。

一些指針,以幫助調試:

  1. 你爲什麼要創建一個變量(columnContainingPlanets)作爲getValueAt(...)方法的指標來使用。它不會造成問題,但似乎沒有必要。

  2. 不編碼在同一條線上的多個代碼語句。這使得更難確定哪個變量爲空。你的情況,我可以看到「TableModel的」可能爲空,或者從TableModel的返回值可能爲空。直到你知道哪個值爲空,你不能解決問題。

  3. 無法測試if語句字符串「」。 getValueAt()方法返回一個Object。一個對象不是一個字符串。

所以,你可能重組你喜歡這個代碼的東西:

for (int index =0 ; index < tableModel.getRowCount(); index ++) 
{ 
    Object value = tableModel.getValueAt(index, 1); 

    if (value.toString().equals("")) 
    { 
     JOptionPane.showMessageDialog(panel_4, "Please Enter Discount Amount For All Items"); 

     return; 
    } 
} 

現在在NullPointerException異常給出的行號會告訴你到底哪些變量爲空。或者:

  1. 的「TableModel的」爲空(其中,因爲你有你如何引用表的模型有問題,或

  2. 「價值」爲空(在這種情況下,你有一個問題包含在你的表格模型中的數據。

最後,不要在JButton使用MouseListener。相反,你應該添加ActionListenerJButton閱讀從Swing tutori節How to Use Buttons。下載演示代碼並播放示例。

相關問題