2012-02-21 4 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

"많은 문제"가 있지만 그 중 아무 것도 설명하지 않으면 도움이되는 방법을 알기가 어렵습니다. 컴파일 할 때 오류 메시지가 표시됩니까? 예외가 던져지고 있습니까? 질문에 대한 답변을 훨씬 쉽게 해주는 데 필요한 세부 정보를 제공하십시오. 또한 코드 들여 쓰기가 다른 사람들이 읽을 수 있도록 코드를 훨씬 쉽게 만들 수있는 표준을 따르도록 코드의 서식을 다시 지정해야합니다. –

답변

17

하나는 코드에 무한 루프가있는 것 같습니다. jSpinner1StateChanged 함수 안에서 jSpinner1StateChanged(evt)을 호출하면 무한 루프가 발생합니다.

어떻게 JSpinner를 만드시겠습니까? int를 사용하는 경우 SpinnerNumberModel을 사용하여 int를 만듭니다. 이렇게하면 스피너에서 현재 값을 가져올 때 코드가 단순 해집니다.

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

감사합니다. Tony – hanem