private int popsize; ... ...... JPanel panel= new JPanel(); panel.add(new JLabel("群体大小:")); popSizeField= new JTextField(" ",6); panel.add(popSizeField); popSizeField.getDocument().addDocumentListener(listener); ...... ...... popsize= Integer.parseInt(popSizeField.getText().trim()); ...... ...... private String[] initialPops() { String[] ipop = new String[100]; for (int i = 0; i < popsize; i++) { ipop[i] = initialPop(); } return ipop; }异常 Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Integer.java:417) at ch8.SGAFrame.calculatefitnessvalue(SGATool2.java:176) at ch8.SGAFrame.select(SGATool2.java:200) at ch8.SGAFrame.process(SGATool2.java:328) at ch8.SGAFrame$1.actionPerformed(SGATool2.java:90) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
...
......
JPanel panel= new JPanel();
panel.add(new JLabel("群体大小:"));
popSizeField= new JTextField(" ",6);
panel.add(popSizeField);
popSizeField.getDocument().addDocumentListener(listener);
......
......
popsize= Integer.parseInt(popSizeField.getText().trim());
......
......
private String[] initialPops() {
String[] ipop = new String[100];
for (int i = 0; i < popsize; i++) {
ipop[i] = initialPop();
}
return ipop;
}异常
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:417)
at ch8.SGAFrame.calculatefitnessvalue(SGATool2.java:176)
at ch8.SGAFrame.select(SGATool2.java:200)
at ch8.SGAFrame.process(SGATool2.java:328)
at ch8.SGAFrame$1.actionPerformed(SGATool2.java:90)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
从输入框中拿到这个值之后,首先用int i =Integer.parseInt(s);
改成:
popSizeField= new JTextField(6);
这样就可以得到里面的值,如果为数字的话,就可以用Integer.parseInt转换成int型的。
在处理的时候要 int temp=Integer.parseInt(从JTextField获得的值);
再使用for语句做循环
1、保证文本框中只有数字2、转换: int b = Integer.parseInt(a);
button.addActionListener(new ActionListener() {
public void proformAction(..evnt e) {
//这里处理你的逻辑
int popsize= Integer.parseInt(popSizeField.getText().trim());//读信息
}
})