我正在尝试制作一个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这里使用版本): .. 要执行任务,请执行以下操作: 要在持续时间之后重复执