在几秒钟后自动更改 jSlider [重复]

Posted

技术标签:

【中文标题】在几秒钟后自动更改 jSlider [重复]【英文标题】:Change jSlider after certain seconds automatically [duplicate] 【发布时间】:2015-05-06 05:09:27 【问题描述】:

我有一个 Java Swing 程序,当 jSlider 更改时,后台程序会在其中执行。但是 jSlider 不能通过人为交互来改变,它会自动减小(jSlider 代表液体的浓度水平)。一旦它减少,其他程序通过 actionListener 读取 jSlider 并提供适当的溶液以满足浓度要求。我无法实现这种情况。我尝试过使用线程,但由于我的知识很少,我可能没有编写正确的代码。

public static void main(String args[])
    
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable()
        
            @Override
            public void run()
            
                new IPS().setVisible(true);

            
        );

         Thread concentration = new Thread()
        
            public void run()
            
                try
                
                    Thread.sleep(3000);
                 catch (InterruptedException v)
                

                
                sldLevel.setValue(sldLevel.getValue() - 3);
            
        ; 
        boolean carryOn = true;

        while (carryOn && !btnIPSStart.isEnabled())
        
            concentration.start();
        
    

使用 Swing 计时器更新代码

    public static void main(String args[])
        
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable()
            
                @Override
                public void run()
                
                    new IPS().setVisible(true);

                
            );

            Timer myTimer = new Timer(100, 1000);
            // I get a error 'int cannot be converted to action listener

            while (myTimer.isRunning)
            
                sldLevel.setValue(sldLevel.getValue() - 3)
            

【问题讨论】:

我看不出你的介绍和你的代码有多大关系。 @MadProgrammer 你能帮我写代码吗? 1) 为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)或SSCCE(简短、自包含、正确示例)。 2)不要阻塞EDT(事件调度线程)。发生这种情况时,GUI 将“冻结”。有关详细信息和修复,请参阅 Concurrency in Swing。 @user3337714, can you assist me on the code. - 你怎么可能在不到一分钟的时间内阅读完本教程?或者您如何在论坛中搜索使用 Swing Timer 的示例? @user3337714,你为什么要创建一个带有两个 int 参数的 Timer?你在教程中哪里看到的?或者您在 Swing Timer API 中的哪里看到了一个将两个整数作为参数的构造函数?读取 API 是解决编译错误的方法。 【参考方案1】:

你不应该使用 Thread 并且你不应该使用 Thread.sleep()。这将导致 GUI 冻结,并且无法重新绘制自身。

您应该使用Swing Timer。当 Timer 触发时,您可以更新滑块的值。

【讨论】:

以上是关于在几秒钟后自动更改 jSlider [重复]的主要内容,如果未能解决你的问题,请参考以下文章

ARM:使用 stm32l0 nucleo 在几秒钟后自动擦除闪存

解决Hbase启动后,hmaster会在几秒钟后自动关闭(停掉)!!!

如何让文字在几秒钟后消失

第一次推送通知在几秒钟后消失

为啥我的 Ktor 应用程序会在几秒钟后失败?

xamps 上的 MySQL 服务运行,然后在几秒钟后停止