GUI、ボタン、相対的なActionListeners、および例外を持つアプリを開発しました。 今日私はこの問題を抱えていました。 setAvailable, setNotAvailable,setPerishable,setCurrentLoad
基準auto
外部クラスのメソッドであるいつもこの例外が発生しますか?
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!");}
}
:私のGUIのボタンにactionEvent
に対して、私はいくつかのJOptionPane.showInputDialog
と、このコードを挿入します。
このコードを実行すると、GUIが表示され、次にb1
というボタンをクリックします。最初のJOptionPane.showInputDialog
が表示され、int load
に格納された値が挿入されます。
値を入力しましたが、その他のJOptionPane.showInputDialog
は表示されませんでしたが(他の入力ダイアログがあります)、コマンドラインに例外があります。 JOptionPane.showInputDialog
に挿入された値が、auto.setCurrentLoad(load);
という行に決して渡されないことに気付きました。
どうしてですか?前にこのエラーは見たことがありません。なぜ私はいつも最初のJOptionPane.showInputDialog
の直後に例外を取得するのですか?同じステートメント/メソッドでJOptionPane.showInputDialog
の多くをJVMが受け入れないのでしょうか?あるいは(私の思うように)私のプログラミングエラーですか?
ありがとうございました。乾杯。
編集:私は、コマンドラインに入った例外を挿入するのを忘れ:
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)
例外はありますか? – bmargulies
取得している例外は何ですか? catchブロックを 'System.out.println ...'から 'e.printStackTrace();'に変更する必要があります。これにより完全な例外が出力されます。ポストをスタックトレースで更新してください。 –
@bmarguliesこれはコマンドラインに表示されます:System.out.println( "Exception!");その後、他のコードは実行されません。 –