2013-05-18 37 views
1

我對Java很新,我試圖做一個基本的用戶界面。我可以使用JButtons輕鬆地調用JOptionPanes,但我不能做的就是使用它們來調用另一個類的任何東西。如何使用按鈕從另一個類調用方法?

目前我有我的主類,我的UI類和我的類來處理我的數據。

以我類,來處理我的數據I具有執行在陣列的2種元素的鹼性之和的方法,包括:

public void firstMonth(){ 
     String ans; 
     int num1 = Integer.parseInt(sortedData[0][0][0]); 
     int num2 = Integer.parseInt(sortedData[0][0][1]); 
     int sum = num1 * num2; 

     ans=String.format("The sum of day1 and day2 is: %s", sum); 
     JOptionPane.showMessageDialog(null, ans, "Title", JOptionPane.PLAIN_MESSAGE); 

    } 

然後在我的UI類我嘗試並調用它當所述按鈕中的一個是按:

public class UserInterface extends JFrame { 

GetData a = new GetData(); 

    private class myhandler implements ActionListener{ 

     public void actionPerformed(ActionEvent event){ 

      if(event.getSource()==button1){ 
       a.firstMonth(); 

      } 
} 
} 

但是,當我按下按鈕,我得到更多的例外,我可以忍受數。有任何想法嗎?

對不起,如果這是一個非常基本的問題。

編輯,這裏是當我按一下按鈕我得到的例外:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null 
    at java.lang.Integer.parseInt(Integer.java:454) 
    at java.lang.Integer.parseInt(Integer.java:527) 
    at pkg110_term3.GetData.firstMonth(GetData.java:75) 
    at pkg110_term3.UserInterface$myhandler.actionPerformed(UserInterface.java:71) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
    at java.awt.Component.processMouseEvent(Component.java:6505) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) 
    at java.awt.Component.processEvent(Component.java:6270) 
    at java.awt.Container.processEvent(Container.java:2229) 
    at java.awt.Component.dispatchEventImpl(Component.java:4861) 
    at java.awt.Container.dispatchEventImpl(Container.java:2287) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 
    at java.awt.Container.dispatchEventImpl(Container.java:2273) 
    at java.awt.Window.dispatchEventImpl(Window.java:2719) 
    at java.awt.Component.dispatchEvent(Component.java:4687) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729) 
    at java.awt.EventQueue.access$200(EventQueue.java:103) 
    at java.awt.EventQueue$3.run(EventQueue.java:688) 
    at java.awt.EventQueue$3.run(EventQueue.java:686) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
    at java.awt.EventQueue$4.run(EventQueue.java:702) 
    at java.awt.EventQueue$4.run(EventQueue.java:700) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:699) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 
+1

我們可以看到發生了什麼異常嗎?否則我們無法幫助。 –

+0

嗨,對不起,有這麼多我認爲它不會有任何用處。我現在編輯了他們。 – JmJ

+0

即使看到一些幫助。您可以使用文件和行號追溯錯誤。 –

回答

1

鑑於Integer.parseInt需要String的說法,它是安全地說,sortedData是3D String陣列。從您的堆棧跟蹤中,數組sortedData已初始化,但各個元素不是

Object類型的默認值爲null。這同樣適用於Object陣列中的值。

確保這些元素在調用Integer.parseInt之前已被賦值。

for (int i=0; i < sortedData.length; i++) { 
    for (int j=0; j < sortedData[i].length; j++) { 
     for (int k=0; k < sortedData[i][j].length; k++) { 
     sortedData[i][j][k] = ... // some string 
     } 
    } 
} 
+0

謝謝,這真的讓我走上正軌。我的元素尚未初始化,所以我只需要弄清楚。 – JmJ

1

在主類中,這條線 - ans=String.format("The sum of day1 and day2 is: %s", sum);

爲什麼使用%s,這意味着變量和sum一個String是一個int。改爲使用%d

另外還有什麼值存儲在sortedData[0][0][0]sortedData[0][0][1]

相關問題