Как я могу получить значение выбранного элемента в JSpinner? - PullRequest
4 голосов
/ 21 февраля 2012

Я делаю приложение, которое использует JSpinner с максимальным числом 30, я должен выбрать значение из этого 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()); }


}

1 Ответ

18 голосов
/ 21 февраля 2012

Например, у вас в коде бесконечный цикл.Внутри функции jSpinner1StateChanged вы вызываете jSpinner1StateChanged(evt), что приведет к бесконечному циклу.

Как вы создаете свой JSpinner?Если вы используете целые, то создайте его с помощью SpinnerNumberModel.Это упростит ваш код при получении текущего значения из счетчика.

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