我开发了一个带有 GUI、按钮、相关 actionListener 和异常的应用程序。今天我遇到了这个问题。在actionEvent
相对于我的 GUI 的按钮中,我插入了这段代码,其中包含一些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,然后单击 button b1
。它出现的第一个JOptionPane.showInputDialog
,是插入一个存储在 a 中的值int load
。
我输入了一个值,但没有JOptionPane.showInputDialog
出现其他值(但还有其他输入对话框),并且在命令行中出现异常。我注意到插入的值JOptionPane.showInputDialog
永远不会传递给 line auto.setCurrentLoad(load);
。
为什么会这样?以前从未见过此错误。为什么我总是在第一个JOptionPane.showInputDialog
可能JVM不接受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)