gpt4 book ai didi

java - 更新整个 JFrame,包括所有 JComponent

转载 作者:行者123 更新时间:2023-12-01 21:26:43 25 4
gpt4 key购买 nike

我正在尝试更新 JFrame 以及框架中的所有组件,包括 JPanelJLabel 组件等。我尝试使用 revalidate(),但这似乎不起作用。我在显示 int 的框架中有一个 JLabel,并且当我单击 JButton 时,int 会迭代 1。我可以看到 int 的值发生了变化,但标签上的实际文本没有变化。我知道我可以使用 JLabel.setText(),但是是否有一种方法可用于所有组件,可以在按下按钮时更新显示的文本/图像?

下面是我的代码:

package repainttest;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Window extends JFrame {
int test = 1;
JLabel label;

public Window() {
setLayout(new FlowLayout());

label = new JLabel(Integer.toString(test));
add(label);

JButton button = new JButton("Add");
button.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
test +=1;
System.out.println(test);
refresh();
}
});
add(button);

setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public void refresh() {
SwingUtilities.updateComponentTreeUI(this);
revalidate();
repaint();
}
}

最佳答案

如果您没有在 JLabel 上设置新文本 (test),它永远不会知道 test 的值在改变。因此,请插入以下语句:

label.setText(String.valueOf(test));

public void actionPerformed(ActionEvent e) 中,在以下语句之后:

测试+=1;

并查看结果。

关于java - 更新整个 JFrame,包括所有 JComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38064852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com