有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaJFrame标题重绘

在我的JFrame中,它循环执行一些任务,我希望看到JFrame标题中的状态,因此我有如下内容:

框架。setTitle(“当前状态[“+自动计数\u Id+”/“+自动计数\u总计+”]”)

但这不是我需要的重新粉刷。因此,我尝试了以下方法:

<1>

    SwingUtilities.invokeLater(new Runnable() 
    {
      public void run()
      {
        frame.setTitle("Current status [ "+Auto_Count_Id+"/"+Auto_Count_Total+" ]");
      }
    });

    <2>
    // repaint(long time, int x, int y, int width, int height) 
    frame.repaint(10,0,0,500,300) 

它们也不工作,只在任务完成后重新绘制,我能做什么


共 (3) 个答案

  1. # 2 楼答案

    不要在Swing的活动线程中做繁重的工作。为您的计算创建一个新线程,以便Swing可以使用其线程重新绘制GUI

  2. # 3 楼答案

    是的,SwingWorker是个不错的选择

    如果您使用的是Java 6,那么它附带了一个包含publish()和process()方法的SwingWorker版本。这些方法用于在执行长时间运行的任务时发布数据,然后在事件调度线程中发布该数据

    您可以使用中定义的长时间运行任务创建SwingWorker子类。然后,在长时间运行的任务中,使用publish()方法发布JFrame标题字符串。覆盖process方法以设置JFrame的标题

    Here's the SwingWorker API doc for Java 6