【发布时间】:2011-05-03 01:39:41
【问题描述】:
我正在开发一个启动小程序的程序,该小程序将演示扩展欧几里得算法的执行方式。我有两个 JTextFields 值将被输入并需要被读取/转换为整数等。我在实际读取输入值开始时遇到了麻烦。
更新问题:
阅读第一个答案后,我对代码进行了更改。我没有使用 DocumentListener,而是按照建议在我的 actionPerformed 方法中做所有事情,但是当我尝试测试时,我仍然遇到错误。
这是我当前执行的操作:
public void actionPerformed(ActionEvent event) {
System.out.println(event.getActionCommand());
String quotient = "";
nText = nField.getText();
mText = mField.getText();
if("Find GCD".equals(event.getActionCommand())){
int nInt = Integer.parseInt(nText);
int mInt = Integer.parseInt(mText);
int q = mInt/nInt;
quotient = (Integer.toString(q));
}
else quotient = "n/a";
//NOT the gcd, just to see if this will display
gcd.setText(quotient);
gcd.setEditable(false);
}
(注意:gcd 是另一个 JTextField,但只需要显示结果)
现在点击我的按钮后,我在控制台中打印出这些错误:
线程“AWT-EventQueue-1”中的异常 java.lang.NullPointerException 在 EuclidApplet.actionPerformed(EuclidApplet.java:87) 在 javax.swing.AbstractButton.fireActionPerformed(未知来源) 在 javax.swing.AbstractButton$Handler.actionPerformed(未知来源) 在 javax.swing.DefaultButtonModel.fireActionPerformed(未知来源) 在 javax.swing.DefaultButtonModel.setPressed(未知来源) 在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知来源) 在 java.awt.Component.processMouseEvent(未知来源) 在 javax.swing.JComponent.processMouseEvent(未知来源) 在 java.awt.Component.processEvent(未知来源) 在 java.awt.Container.processEvent(未知来源) 在 java.awt.Component.dispatchEventImpl(未知来源) 在 java.awt.Container.dispatchEventImpl(未知来源) 在 java.awt.Component.dispatchEvent(未知来源) 在 java.awt.LightweightDispatcher.retargetMouseEvent(未知来源) 在 java.awt.LightweightDispatcher.processMouseEvent(未知来源) 在 java.awt.LightweightDispatcher.dispatchEvent(未知来源) 在 java.awt.Container.dispatchEventImpl(未知来源) 在 java.awt.Window.dispatchEventImpl(未知来源) 在 java.awt.Component.dispatchEvent(未知来源) 在 java.awt.EventQueue.dispatchEventImpl(未知来源) 在 java.awt.EventQueue.access$000(未知来源) 在 java.awt.EventQueue$1.run(未知来源) 在 java.awt.EventQueue$1.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.AccessControlContext$1.doIntersectionPrivilege(未知来源) 在 java.security.AccessControlContext$1.doIntersectionPrivilege(未知来源) 在 java.awt.EventQueue$2.run(未知来源) 在 java.awt.EventQueue$2.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.AccessControlContext$1.doIntersectionPrivilege(未知来源) 在 java.awt.EventQueue.dispatchEvent(未知来源) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.run(未知来源)
我在设置的行收到 NullPointerException
nText = nField.getText();
但我仍然不确定为什么我无法获取插入到我的 JTextField 中的文本。我发现的每个示例都表明这应该有效,但我无法做到。谢谢。
【问题讨论】:
-
您为什么不简单地阅读 actionPerformed 方法中的文本,而不是通过 DocumentListener 的卷积以及随之而来的所有内容?
标签: java swing jtextfield