Tag: timertask

如何在java swing中自动更改图像?

嗨,我正在创建一个java桌面应用程序,我想要显示图像,我希望所有图像应该每5秒自动更改我不知道如何做到这一点 这是我的代码 public class ImageGallery extends JFrame { private ImageIcon myImage1 = new ImageIcon (“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\yellow.png”); private ImageIcon myImage2 = new ImageIcon (“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\d.jpg”); private ImageIcon myImage3 = new ImageIcon (“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\e.jpg”); private ImageIcon myImage4 = new ImageIcon (“E:\\SOFTWARE\\TrainPIS\\res\\drawable\f.jpg”); JPanel ImageGallery = new JPanel(); private ImageIcon[] myImages = new ImageIcon[4]; private int curImageIndex=0; public ImageGallery () { ImageGallery.add(new […]

如何将TimerTask与lambdas一起使用?

正如您所知,您可以在Java 8中使用lambdas,例如替换匿名方法。 这里可以看到Java 7与Java 8的一个例子: Runnable runnable = new Runnable() { @Override public void run() { checkDirectory(); } }; 在Java 8中可以表示为以下两种方式: Runnable runnable = () -> checkDirectory(); 要么 Runnable runnable = this::checkDirectory; 这是因为Runnable是一个function接口,只有一个(抽象)公共非默认方法。 但是……对于TimerTask我们有以下内容: TimerTask timerTask = new TimerTask() { @Override public void run() { checkDirectory(); } }; 看起来很熟悉吧? 但是使用lambda表达式不起作用,因为TimerTask是一个抽象类,即使它只有一个抽象的公共非默认方法,它也不是一个接口,因此也没有function接口。 它也没有重构为具有默认实现的接口,因为它带有状态,因此无法完成。 所以我的问题 :在构造TimerTask时有没有办法使用lambdas? 我想要的是以下内容: Timer […]

如果时钟发生变化,Timertask.scheduleAtFixedRate应该怎么做?

我们希望每1000秒运行一次任务(比方说)。 所以我们有 timer.scheduleAtFixedRate(task, delay, interval); 大多数情况下,这很好。 但是,这是一个嵌入式系统,用户可以更改实时时钟。 如果他们在我们设置定时器之后将其设置为过去的时间,则计时器似乎直到原始实时日期/时间才执行。 因此,如果他们将其设置为3天,则计时器不会执行3天:( 这是允许的行为,还是Java库中的缺陷? Oracle javadoc似乎没有提及有关依赖性的任何信息,也没有提及系统时钟的基础值。 如果允许的话,我们如何发现这个时钟变化并重新安排我们的计时器?