问题描述
在SWT中,用FileDialog选择打开文件:FileDialog fileSelect=new FileDialog(shell,SWT.SINGLE); fileSelect.setFilterNames(new String[]{"*.wav"}); fileSelect.setFilterExtensions(new String[]{"*.wav"}); String url=""; url=fileSelect.open();选择打开文件正常,但是如果点击取消按钮的话,就出现以下异常:java.lang.IllegalArgumentException: Argument cannot be nullat org.eclipse.swt.SWT.error(SWT.java:3547)at org.eclipse.swt.SWT.error(SWT.java:3481)at org.eclipse.swt.SWT.error(SWT.java:3452)at org.eclipse.swt.widgets.Widget.error(Widget.java:432)at org.eclipse.swt.widgets.Text.setText(Text.java:1794)at com.cnfol.im.ui.SysConfig$1$1.widgetSelected(SysConfig.java:139)at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)at com.cnfol.im.ui.SysConfig.open(SysConfig.java:77)at com.cnfol.im.ui.Main$3.widgetSelected(Main.java:225)at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)at com.cnfol.im.ui.Main.open(Main.java:178)at com.cnfol.im.ui.Main.main(Main.java:83)望指点!
解决方案
问题不是出在这段代码上,而在这段代码之后的处理上。在点击<取消>之后,url为null,后面的代码中需要一个非null的参数,这样就会导致你看到的一个错误。
解决方案二:
我能问一下哪一行是SysConfig.java:139吗?问题就是这一行所调用的构造函数传递了非法的参数。