【发布时间】:2015-06-23 22:23:06
【问题描述】:
目前有一个问题,我弹出一个消息对话框以提示用户输入字符串。我检查了名称是否为空,如果他们点击“确定”按钮,它可以正常工作,但是如果用户点击取消按钮(无论他们是否在文本框中输入任何内容),那么我会收到以下错误:
java.lang.NullPointerException
at cc.nisc.mapping.mappingadvsearch.ResultsPopupMenu$1.doActionPerformed(ResultsPopupMenu.java:98)
at cc.nisc.gui.action.NiscAction.actionPerformed(NiscAction.java:225)
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.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
相关代码为:
public final ResultsMenuAction createLayerAction = new ResultsMenuAction("uiCreateLayer") {
@Override
protected void doActionPerformed(ActionEvent e) {
try {
String queryName = JOptionPane.showInputDialog(WinMgr.getInstance().getSelectedNavigator(),
"Enter a name for your exported query layer",
"Enter Query Name",
JOptionPane.QUESTION_MESSAGE);
if (queryName.isEmpty()) {
JOptionPane.showMessageDialog(WinMgr.getInstance().getSelectedNavigator(),
"Please enter a name for your query",
"Empty name",
JOptionPane.WARNING_MESSAGE);
return;
}
....
....
如何检查是否已单击取消按钮以返回而不是引发错误?
【问题讨论】:
-
queryName很可能是 null 而不是空字符串。事实上,当您取消对话框时,您会选择 nothing(在大多数情况下是 null 的含义)。 -
将 queryName.isEmpty() 替换为 string.IsNullOrEmpty(queryName)
-
我尝试使用“if (queryName.isEmpty() || queryName == null) {”但没有成功。我会尝试你们两个提出的两个建议
-
先测试空...
-
首先检查空值!为什么我做 of(A || B) 或 if(B || A) 有什么关系?
标签: java nullpointerexception joptionpane