gpt4 book ai didi

java - (JPanel 切换)在两个面板切换之间添加以秒为单位的延迟(java)

转载 作者:行者123 更新时间:2023-12-01 09:56:44 24 4
gpt4 key购买 nike

我试图在同一 JFrame 上切换的两个 JPanel 之间添加延迟,两者都在循环中改变可见性类型。我也尝试了 thread.sleep 但它不起作用预先感谢:)

面板 1 颜色为红色

面板 2 颜色为黑色

 for (int i = 0; i < LENGTH; i++) {
panel1.setVisible(true)
/*************************************
here i want to add delay
**************************************/
panel1.setVisible(false)
panel2.setVisible(true);
for (int k = 0; k < rSIZE; k++) {
tempr[i][k].setBackground(labelsGrid[i][k].getBackground());
}
}

最佳答案

您需要使用 Swing 计时器来触发 UI 切换之间的延迟。这是一个简单的例子。

package app;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class App extends JFrame
{
private JLabel label;
private Timer timer;
private int counter = 10; // the duration
private int delay = 1000; // every 1 second
private static final long serialVersionUID = 1L;

public App()
{
super("App");
setDefaultCloseOperation(EXIT_ON_CLOSE);

label = new JLabel("Wait for " + counter + " sec", JLabel.CENTER);
JPanel contentPane = (JPanel) getContentPane();
contentPane.add(label, BorderLayout.CENTER);
contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
pack();

ActionListener action = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent event)
{
if(counter == 0)
{
timer.stop();
label.setText("The time is up!");
}
else
{
label.setText("Wait for " + counter + " sec");
counter--;
}
}
};

timer = new Timer(delay, action);
timer.setInitialDelay(0);
timer.start();

setVisible(true);
}

public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new App();
}
});
}
}

这个简单的计时器将每秒触发 ActionListener 并在递减计数器值后更新标签。

关于java - (JPanel 切换)在两个面板切换之间添加以秒为单位的延迟(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37161562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com