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

1つは、コードに無限ループがあるようです。jSpinner1StateChanged関数内で、を呼び出しjSpinner1StateChanged(evt)ています。これにより、無限ループが発生します。

JSpinnerをどのように作成していますか?intを使用している場合は、を使用して作成しますSpinnerNumberModel。これにより、スピナーから現在の値を取得するときにコードが簡略化されます。

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