gpt4 book ai didi

如果不重新调整应用程序窗口的大小,Java 窗口将不会更新

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:15 25 4
gpt4 key购买 nike

我试图使“剩余时间”附近的整数减一并每秒重新绘制但只有当我不断调整窗口大小时才能看到变化。我已经在 Windows 中的 Jcreator 3 和 Ububtu 11.10 命令行中尝试过此操作,但它仍然不起作用。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;

class StatusPanel extends JPanel implements ActionListener {

int time = 60;
int round = 1;
Timer timer;

public StatusPanel() {
this.timer = new Timer(1000, this);
this.timer.start();
this.setVisible(true);
this.setDoubleBuffered(true);
}

public void updateTime() {
if (time > 0) {
time--;
}
}

public void paint(Graphics page) {

super.paint(page);

page.setFont(new Font("TimesRoman", Font.PLAIN, 30));
String sTime = String.valueOf(time);
String sRound = String.valueOf(round);


page.setColor(Color.WHITE);
page.drawString(sTime, 253, 149);
page.drawString(sRound, 230, 105);
}

public void actionPerformed(ActionEvent event) {

this.updateTime();
}
}

最佳答案

public void updateTime(){
if (time>0) time--;
}

时间改变时,你的组件应该被重新绘制。然而,Swing 通常将组件视为静态对象,并且不会连续重绘它们。您需要告诉 Swing 您希望重新绘制组件:

public void updateTime(){
if (time>0){
time--;
this.repaint();
}
}

顺便说一句,也许您应该在达到零时停止计时器。好像已经不用了。

关于如果不重新调整应用程序窗口的大小,Java 窗口将不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15584481/

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