【问题标题】:How can I redraw a JFrame and its components multiple times per frame?如何每帧多次重绘 JFrame 及其组件?
【发布时间】:2016-09-18 22:24:35
【问题描述】:

当用户单击按钮时,我正在尝试更新 JLabel,例如以下伪代码:

private static void ButtonAction()
{
    // Set label to `loading..`

    // Perform action

    // Set label to `ready.`
}

我尝试使用:

frame.invalidate();
frame.validate();
frame.repaint();

到目前为止没有运气。或者我的按钮动作太快而看不到它的切换?

如何确保用户同时看到loading.. 和ready?

【问题讨论】:

标签: java swing jframe jpanel rendering


【解决方案1】:

或者我的按钮操作太快而看不到它的切换?

如果是,那么除非你想设置一个计时器来显示最终值,否则你无能为力。

如何确保用户看到加载.. 和准备就绪?

更常见的情况是,当您执行长时间运行的任务时,您需要使用Threads,这样您就不会阻止框架响应事件并重新绘制自身。

阅读 Concurrency 上的 Swing 教程部分了解更多信息。也许你可以使用 SwingWorker。

如果您不使用 SwingWorker,则需要创建自己的线程,然后在您想要更新标签时使用 SwingUtilities.invokeLater(...)。

【讨论】:

    猜你喜欢
    • 2012-09-27
    • 2012-04-29
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多