2015-05-06 8 views
0

У меня есть программа Java Swing, где фоновые программы выполняются при изменении jSlider. Но 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(); 
     } 
    } 

код Обновление с свинг Таймер

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) 
      } 
+1

Использование Swing 'Timer' – MadProgrammer

+0

Я не вижу большого отношения между вашим введением и вашим кодом. – user1803551

+0

@MadProgrammer вы можете мне помочь в коде. – user3337714

ответ

1

Вы не должны использовать тему, и вы не должны использовать Thread.sleep(). Это заставит графический интерфейс зависнуть, и он не сможет перекрасить себя.

Вместо этого вы должны использовать Swing Timer. Когда срабатывает таймер, вы можете обновить значение ползунка.