-4

私は、ボタン、相対的なactionListeners、および例外を備えたGUIを備えたアプリを開発しました。今日、私はこの問題を抱えていました。actionEventGUIのボタンに関連して、このコードを挿入しましたJOptionPane.showInputDialog

public void actionPerformed(ActionEvent ae){

 if(ae.getSource()==b1){
 try{//FIRST `JOptionPane.showInputDialog`
   int load = Integer.parseInt(JOptionPane.showInputDialog(null,"Insert current load value: "));
   auto.setCurrentLoad(load);
   //other `JOptionPane.showInputDialog`
 int choiceDep = Integer.parseInt(JOptionPane.showInputDialog(null, "Does the truck transport perishable goods? 1: YES 2: NO"));
 if(choiceDep==1) {
   //here we have to insert expiration date
   int day = Integer.parseInt(JOptionPane.showInputDialog(null,"Insert value"));
  int month = Integer.parseInt(JOptionPane.showInputDialog(null,"Insert value"));
  int year = Integer.parseInt(JOptionPane.showInputDialog(null,"Insert value"));
  auto.setPerishable(day,month,year);
 }
 else if(choiceDep==2) 
                 auto.setNotPerishable();

String choiceAv = JOptionPane.showInputDialog(null, "Available Truck? Yes or no?");
 if(choiceAv.equals("Yes")) auto.setAvailable();
 else auto.setNotAvailable();

}
        //the exception      
    catch (Exception e) { System.out.println("Exception!");}             
  }

setAvailable, setNotAvailable,setPerishable,setCurrentLoadを参照して、外部クラスのメソッドはどこにありますかauto

このコードを実行すると、GUIが表示され、ボタンをクリックしますb1JOptionPane.showInputDialogに格納されている値を挿入するのが最初に表示されint loadます。

値を入力しましたが、他に値が表示されずJOptionPane.showInputDialog(ただし、他の入力ダイアログがあります)、コマンドラインで例外が発生しました。JOptionPane.showInputDialogに挿入された値が行に渡されることはないことに気づきましたauto.setCurrentLoad(load);

なぜそれが起こるのですか?これまでこのエラーは見られませんでした。最初の直後に常に例外が発生するのはなぜですか?JOptionPane.showInputDialogJVMがJOptionPane.showInputDialog同じステートメント/メソッドでこれの多くを受け入れない可能性がありますか?それとも(私が思うに)私のプログラミングエラーですか?

ご協力いただきありがとうございます。乾杯。

編集:コマンドラインで取得した例外を挿入するのを忘れました:

java.lang.NullPointerException
        at AutoCom.actionPerformed(AutoCom.java:50)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown So
ce)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
4

2 に答える 2

1

説明によると、自動変数はnullのようです。

于 2011-06-29T21:44:24.267 に答える
1

ほとんどのauto場合、ボタンを押す前にオブジェクトが初期化されていません。クラスautoのメンバー変数であると想定しています。AutoComその場合、おそらくauto定義を次のように変更する必要があります。

protected <TypeOfAutoHere> auto = new <TypeOfAutoHere>();
于 2011-06-29T21:46:03.373 に答える