我正在创建一个使用最大数量为30的JSpinner的应用程序,我应该从这个JSpinner中选择一个值并将一个String带到JTextField,结果将出现在Textarea中,当我编译时我有很多问题关于方法jSpinner1State,任何人都可以帮助我,因为我不知道我的问题在哪里。这是我的方法JSpinner的代码:
jSpinner1.addChangeListener(this);
private void jSpinner1StateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
Object sp=jSpinner1.getValue();
int i =Integer.parseInt(sp.toString() );
String targetIP=jTextField1.getText();
try{
jSpinner1StateChanged(evt);
String cmd = "tracert -h "+i+ "" +targetIP;
Process p = Runtime.getRuntime().exec(cmd);
InputStream in = p.getInputStream();
StringBuilder build = new StringBuilder();
Reader reader = new InputStreamReader(in);
char[] buffer = new char[512];
int nbRead = reader.read(buffer);
while(nbRead > 0) {
build.append(buffer, 0, nbRead);
nbRead = reader.read(buffer);
}
String response = build.toString();
jTextArea1.setText(response);
}catch(Exception e){
jTextArea1.append(e.toString()); }
}
答案 0 :(得分:18)
首先,您的代码中似乎有一个无限循环。在jSpinner1StateChanged函数中,您正在调用jSpinner1StateChanged(evt)
,这将导致无限循环。
您是如何创建JSpinner的?如果您正在使用整数,请使用SpinnerNumberModel
创建它。当从微调器中获取当前值时,这将简化代码。
jSpinner1 = new JSpinner(new SpinnerNumberModel(0, 0, 30, 1));
Integer currentValue = (Integer)jSpinner1.getValue();