6

我正在制作一个使用最大编号为 30 的 JSpinner 的应用程序,我应该从这个 JSpinner 中选择一个值并将一个字符串粘贴到 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()); }


}
4

1 回答 1

21

一方面,您的代码中似乎有一个无限循环。在您的 jSpinner1StateChanged 函数中,您正在调用jSpinner1StateChanged(evt),这将导致无限循环。

你是如何创建你的 JSpinner 的?如果您使用的是整数,则使用SpinnerNumberModel. 当从微调器中获取当前值时,这将简化您的代码。

jSpinner1 = new JSpinner(new SpinnerNumberModel(0, 0, 30, 1));
Integer currentValue = (Integer)jSpinner1.getValue();
于 2012-02-21T15:49:42.630 回答