如何在JSpinner中获取所选项的值?

时间:2012-02-21 15:30:45

标签: java swing jspinner changelistener

我正在创建一个使用最大数量为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()); }


}

1 个答案:

答案 0 :(得分:18)

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

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

jSpinner1 = new JSpinner(new SpinnerNumberModel(0, 0, 30, 1));
Integer currentValue = (Integer)jSpinner1.getValue();