JButtons会自动更新吗?

时间:2012-02-10 00:58:20

标签: java swing jbutton

说我有一个名为b和我的JButton:

b.setText(""+someIntVariable)

add()到适当的JFrame。如果稍后我的程序更改someIntVariable的值,JButton的文本会自动在我的GUI中更新吗?或者我必须做些什么来更新它?

3 个答案:

答案 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);
    }
}