private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int count = jSlider1.getValue();
int delay = jSlider2.getValue();
int valueOfSlider = jSlider2.getValue();
int valueOfSlider2 = jSlider1.getValue();
while (count > 0)
{
count--;
String count2 = ""+count;
jLabel3.setText(count2);
try {Thread.sleep(delay); }
catch (InterruptedException ie) { }
}
最终它将在jLabel上显示最终编号,但不会递增更新编号。任何帮助
Swing是单线程的 。因此, 长时间运行的任务绝不应在EDT中进行
。这包括睡觉。而是使用javax.swing.Timer
。这将在后台线程中延迟,然后发布要在EDT中执行的操作。
也可以看看:
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public final class JLabelUpdateDemo {
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI(){
final JFrame frame = new JFrame("Update JLabel Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(JTimerLabel.getInstance());
frame.setSize(new Dimension(275, 75)); // used for demonstration purposes
//frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
Timer t = new Timer(1000, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
int val = Integer.valueOf(JTimerLabel.getInstance().getText());
JTimerLabel.getInstance().setText(String.valueOf(++val));
}
});
t.start();
}
private static final class JTimerLabel extends JLabel{
private static JTimerLabel INSTANCE;
private JTimerLabel(){
super(String.valueOf(0));
setFont(new Font("Courier New", Font.BOLD, 18));
}
public static final JTimerLabel getInstance(){
if(INSTANCE == null){
INSTANCE = new JTimerLabel();
}
return INSTANCE;
}
}
}
该SSCCE模仿一个计数器,该计数器从0
每秒开始计数(即更新JLabel
实例),直到应用程序终止。
如何在不停止主GUI线程的情况下停止循环?(线程。睡眠(1000)未工作)
我在试着理解为什么一些简单的环路会以这样的速度运行 第一种情况: 根据IACA,吞吐量是1个周期,瓶颈是端口1,05。我不明白为什么它是1 cylce。毕竟我们有两个循环承载的依赖关系: 而且这种Latency是循环进行的,所以它应该会减慢我们的迭代。 第二种情况: 我更不明白为什么吞吐量是1.65。
问题内容: 我正在尝试提高SQL编程的效率。我正在尝试运行一个循环,以对仅按数字后缀更改的字段名称重复执行更新命令。 例如,而不是写出来,然后每次更新: 让我知道是否可以澄清。我正在使用SQL Server 2005。 感谢您的指导。 我正在尝试应用Adams的解决方案,并且需要了解以下N’的正确用法: 问题答案: 这实际上将不起作用,因为您不能在列名中加上引号。您实际上要做的是让SQL比较两个始
问题内容: 我想在循环内添加延迟/睡眠: 我这样尝试过: 只有第一种情况是正确的:显示后,它将等待3秒钟,然后显示,但随后将不断重复。 我想要的是在显示3秒之后显示出来,然后它需要第二次等待3秒,依此类推。 问题答案: 该函数是非阻塞的,将立即返回。因此,您的循环将非常快速地迭代,并且将快速连续地发起3秒超时触发。这就是为什么您的第一个警报会在3秒钟后弹出,而其余所有警报都将连续不断地出现。 您可
我正在尝试使用Postman来验证API。我可以毫无问题地验证单个请求,并获得所需的输出。但是,我现在想进行负载测试,并运行相同的调用5次。 我尝试使用for和while循环,但是Postman给出了一个错误。
我正在做一个双人骰子游戏,有五轮,但是我想保持前几轮的分数不变,我该怎么做? 游戏规则如下: 每个玩家骰子上滚动的分数会加到他们的分数上。如果总数是偶数,他们的分数会增加10分。如果总数是奇数,他们的分数会减去5分。如果他们掷出双倍,他们会多掷一个骰子,并将滚动的分数加到他们的分数上。玩家的分数在任何时候都不能低于0。在5轮结束时得分最高的人获胜。如果两个玩家在5轮结束时得分相同,他们每人投1个死