说我有一个名为b和我的JButton:
b.setText(""+someIntVariable)
我add()
到适当的JFrame。如果稍后我的程序更改someIntVariable
的值,JButton的文本会自动在我的GUI中更新吗?或者我必须做些什么来更新它?
答案 0 :(得分:3)
将一个按钮添加到JFrame后,它将显示您将其作为参数提供的原始文本。如果您想更改文字,则需要再次致电b.setText(""+someIntVariable)
。但是,您不必将add
添加到JFrame。
这是因为您指的是someIntVariable
中存储的值,而不是变量本身。因此,如果值更改,它将不会自动更新。
答案 1 :(得分:3)
JButton的文字不会自动更新。它获取您使用""+someIntVariable
创建的字符串表示形式。即使你只传递了int变量本身(这是不可能的,但我们假设它是),它将是整数的副本,而不是原始值。现在有办法获得一个指向整数的指针,看原文是否已经改变,即使有办法,整数也无法通知JButton
它已经改变了。
可能有办法创建这样的按钮。我不认为使用JButton
是其中一种方式,但在其他框架中可能有按钮类可以处理这样的事情。但是您需要使用更复杂的数据类型作为传入的变量。
答案 2 :(得分: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);
}
}