[英]Do JButtons automatically update?
假设我有一个名为b的JButton,我:
b.setText(""+someIntVariable)
然后add()
到适当的JFrame中。 如果以后我的程序更改了someIntVariable
的值,JButton的文本会在我的GUI中自动更新吗? 还是我需要做一些更新?
将按钮添加到JFrame后,它将显示您作为参数提供给它的原始文本。 如果要更改文本,则需要再次调用b.setText(""+someIntVariable)
。 但是,您不必将其add
到JFrame。
这是因为您引用的是存储在someIntVariable
的值 ,而不是变量本身。 因此,如果值更改,它将不会自动更新。
JButton的文本不会自动更新。 它获取使用""+someIntVariable
创建的字符串表示""+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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.