2012-02-21 61 views
3

我正在制作一个应用程序,使用最大数量为30的JSpinner,我应该从此JSpinner中选择一个值并将一个字符串粘贴到JTextField,并且结果将显示在Textarea中,当我编译时,我遇到了很多问题方法jSpinner1State,可以帮助我的任何人,因为我不知道我的问题在哪里。这是我的代码方法JSpinner:如何获取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

对我自己说,如果你有“很多问题”,但没有描述他们,很难知道如何提供帮助。尝试编译时是否收到错误消息?是否抛出异常?请提供必要的详细信息,因为它可以更轻松地回答您的问题。此外,您还需要重新设置代码的格式,以使代码缩进符合标准,这会使您的代码更容易让其他人阅读。 – 2012-02-21 15:50:28

回答

17

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

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

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

非常感谢托尼 – hanem 2012-02-21 16:51:02

相关问题