当前位置: 首页 > 面试题库 >

通过计时器在JDialog中设置动态JLabel文本

方焱
2023-03-14
问题内容

我正在尝试制作一个JDialog,它将在JLabel上向用户显示动态消息。该消息应该是从1到10的计数(并且应该每秒更改一个数字)。问题是,当我进行调试时-
它在“ dia.setVisible(true);”之后立即停止 ,除非我将关闭JDialog,否则它将不会继续。有什么可能的解决办法?谢谢。

看一下代码:

    @Override
public void run() {

    dia = new JDialog(parentDialog, true);
    dia.setLocationRelativeTo(parentFrame);


    String text = "Text ";
    dia.setSize(300, 150);
    jl = new JLabel(text);
    dia.getContentPane().add(jl);
    dia.setVisible(true);
    for (int i = 0; i < 10; i++) {
        try {
            Thread.sleep(1000);
            jl.setText(text + " " + i);

        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

问题答案:
  • 不要Thread.sleep(int)用于Swing GUI,导致冻结直到Thread.sleep(int)结束

  • 使用Swing Timer而不是通过以下方式锁定Swing GUIThread.sleep(int)

  • 不使用dia.setSize(300, 150),学习如何LayoutManager工作



 类似资料:
  • 问题内容: 我有一个JLabel,上面有很多文字。有没有一种方法可以使JLabel具有最大宽度,以便它包装文本以使其不超过该宽度? 谢谢 问题答案: 没有。 您可以在标签中使用HTML,但随后必须对break标签进行硬编码。 更好的方法是使用JTextArea并打开环绕。您可以更改文本的背景,前景,字体等,使其看起来像标签。 请注意,至少从Java 7开始,此答案已过时。 按照@darren的回答

  • 问题内容: 我必须查询数据库以获取要写入的数据并加速打开对话框 我没有创建任何文本,并在完成处理后设置了文本 但是文字没有更新 有什么办法可以做到这一点 这是我对话框的src代码: 问题答案: 为了使您能够进行后台工作,您需要调用方法。如果您不添加它,那么…它将不知道何时开始工作。就像其他任何变量一样: 但是,如果您从未将其添加到任何内容(或未添加到),则将永远不会添加/执行该内容。 在构造函数内

  • 我不能得到一个计时器工作在斯威夫特请帮助。我得到错误。

  • 我在将JDialog设置为非模态时遇到问题。我需要在不阻止应用程序其余部分的情况下显示弹出窗口。我尝试使用SwingUtilities.invoke稍后(),但顾名思义,它是在主线程工作完成后很久才调用的。为了简化,这是我的代码: 对话框会显示出来,但它是空的。如果我将其用作模式,它会显示得很好。我尝试在某些变体中使用它,例如: 但是正如我所说,对话框对我来说调用得太晚了。(我也尝试了调用和等待,

  • 问题内容: 我的Azure函数具有以下function.json,其日程表设置为每天9.30运行。我想要的是动态设置此json 的属性。当正在使用我的应用程序的客户端输入日期时,就会出现这种情况,该日期计划程序应该运行。 这可能吗? (还请注意,由于预算原因,我不想使用Azure Scheduler) 问题答案: 使用Kudu API更改function.json https://github.c

  • 问题内容: 如何设置一个计时器(例如2分钟)尝试连接数据库,然后在连接中出现任何问题时引发异常? 问题答案: 因此,答案的第一部分是如何做主题所要求的,因为这是我最初对它的解释方式,并且似乎有人发现有所帮助。此后,问题得到了澄清,我已经扩展了答案以解决该问题。 设定计时器 首先,你需要创建一个计时器(我在java.util这里使用版本): .. 要执行任务,请执行以下操作: 要在持续时间之后重复执