說我有一個JButton稱爲B和I:JButtons會自動更新嗎?
b.setText(""+someIntVariable)
,我又把它add()
到合適的JFrame。如果稍後我的程序更改了someIntVariable
的值,那麼JButton的文本會在我的GUI中自動更新?或者我必須做些更新嗎?
說我有一個JButton稱爲B和I:JButtons會自動更新嗎?
b.setText(""+someIntVariable)
,我又把它add()
到合適的JFrame。如果稍後我的程序更改了someIntVariable
的值,那麼JButton的文本會在我的GUI中自動更新?或者我必須做些更新嗎?
將按鈕添加到JFrame後,它將顯示您將其作爲參數提供的原始文本。如果您想更改文字,則需要再次致電b.setText(""+someIntVariable)
。但是,您不必將其add
它給JFrame。
這是因爲您指的是存儲在someIntVariable
中的值,而不是變量本身。所以如果價值改變,它不會自動更新。
JButton的文本不會自動更新。它會獲得您使用""+someIntVariable
創建的字符串表示形式。即使你只傳遞了int變量本身(這是不可能的,但我們假設它是),它將是整數的一個副本,而不是原始值。現在有辦法讓它獲得一個指向整數的指針,以查看原來的內容已經改變了,即使有辦法,整數也無法通知它已經改變的JButton
。
可能有方法來創建像這樣的按鈕。我不認爲使用JButton
就是其中一種方式,但其他框架中可能會有按鈕類來處理這種情況。但是,你需要使用更復雜的數據類型爲你傳遞的變量
可以更改按鈕的標籤是這樣的:
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);
}
}
另請參見[初始線程](http://download.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)。 – trashgod 2012-02-20 13:04:10
這將花費更少的時間來多試在這裏問。 – 2012-02-10 01:08:00