gpt4 book ai didi

java - JFrame 在更改其内容和 pack() 时闪烁

转载 作者:行者123 更新时间:2023-12-01 22:47:30 25 4
gpt4 key购买 nike

我的显示屏仅在页面上显示分数:

例如:金宝总分:22

当得分时,会触发一个事件来更新分数并在页面上重新绘制新分数:

public void showScore(String username, int score)
{
contentPane.remove(layout.getLayoutComponent(BorderLayout.CENTER));
score.setText("<html>" + username + "<br/>Total Hits: " + totalHits + "</html>");
contentPane.add(score, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}

每次得分时都会调用此函数,它会删除旧的得分消息,添加新的得分消息,然后打包并重新绘制。

问题是绘制更新的框架时窗口闪烁。似乎有一瞬间显示了未格式化的信息

contentPane 是一个容器框架是一个 JFrame

最佳答案

调用 pack() 将完全重新渲染 JFrametop-level, heavyweight container归主机平台所有。相反,更新用于显示修改后的分数的 JComponent。引用了完整的例子here 。摘录表格RCStatus ,

public class RCStatus extends JPanel implements Observer {

/** Update the game's status display. */
public void update(Observable model, Object arg) {
// invoke setText() here
}
}

查看此answer有关 observer pattern 的更多信息.

关于java - JFrame 在更改其内容和 pack() 时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25123416/

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