2012-02-10 2 views
2

내가하는 JButton가 B와 I라는이 말 :JButton이 자동으로 업데이트 되나요?

b.setText(""+someIntVariable) 

을 그리고 적절한 JFrame의에 add(). 나중에 내 프로그램이 someIntVariable 값을 변경하면 JButton의 텍스트가 내 GUI에서 자동으로 업데이트됩니까? 또는 그것을 업데이트하기 위해 뭔가를해야합니까?

+0

여기에 물어보십시오. –

답변

3

단추가 JFrame에 추가되면 매개 변수로 지정한 원래 텍스트가 표시됩니다. 텍스트를 변경하려면 b.setText(""+someIntVariable)에 다시 전화해야합니다. 그러나, 당신은 add JFrame에 그것을하지 않아도됩니다.

값이이고 변수 자체가 아니기 때문에 someIntVariable에 저장되어 있기 때문입니다. 따라서 값이 변경되면 자동으로 업데이트되지 않습니다.

3

JButton의 텍스트가 자동으로 업데이트되지 않습니다. ""+someIntVariable으로 만든 문자열 표현을 가져옵니다. 비록 당신이 int 변수 자체를 넘겼다 고해도 (가능하지 않지만, 그것이 있다고 가정 해 봅시다), 원래 값이 아닌 정수의 사본이됩니다. 이제 원본에 변경 사항이 있음을 알기 위해 정수에 대한 포인터를 얻는 방법이 있습니다. 심지어 방법이 있더라도 정수는 변경된 것으로 JButton에 알릴 방법이 없습니다.

이와 같은 버튼을 만드는 방법이있을 수 있습니다. 나는 JButton을 사용하는 것이 그러한 방법 중 하나라고 생각하지 않지만, 이와 같은 것을 처리 할 수있는 다른 프레임 워크의 버튼 클래스가있을 수 있습니다. 그러나 당신은 당신이 전달 된 변수로 더 복잡한 데이터 유형을 사용해야 할 것

0

당신은이 같은 버튼의 레이블을 변경할 수 있습니다.

그것은보다 시도하는 데 시간이 덜 걸렸을 것
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 

public class demoframe extends JFrame implements ActionListener { 

    String label=new String("Init Label"); 
    JButton b1=new JButton(label); 
    JButton b2=new JButton("Action"); 
    demoframe() 
    { 
     this.add(b1); 
     this.add(b2); 
     b2.addActionListener(this); 
    } 
    public static void main(String arg[]) 
    { 
     demoframe d=new demoframe(); 
     d.setSize(200, 200); 
     d.setVisible(true); 
     d.setLayout(new FlowLayout()); 
    } 
    public void actionPerformed(ActionEvent e) 
    { 
     label="New Label"; 
     b1.setText(label); 
    } 
} 
+0

[초기 스레드] (http://download.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)도 참조하십시오. – trashgod

관련 문제