2016-04-12 18 views
-2
private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 148, 120); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JButton btnStart = new JButton("Start"); 
    btnStart.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) 
     { 
      while(chckbxNewCheckBox.isSelected()){ 
      try { 

       Robot auto = new Robot(); 


       auto.delay(2300); 
       auto.mouseMove(377, 182); 
       auto.mousePress(InputEvent.BUTTON3_DOWN_MASK); 
       auto.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); 
       // 
       auto.delay(1000); 
       auto.mouseMove(466, 293); 
       auto.mousePress(InputEvent.BUTTON1_DOWN_MASK); 
       auto.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); 
       // 
       auto.delay(1000); 
       auto.mouseMove(1061, 217); 
       auto.mousePress(InputEvent.BUTTON1_DOWN_MASK); 
       auto.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); 
       // 
       auto.delay(8000); 
       auto.mouseMove(601, 493); 
       auto.mousePress(InputEvent.BUTTON1_DOWN_MASK); 
       auto.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); 
       // 
       auto.delay(60000); 
       auto.mouseMove(387, 355); 
       auto.mousePress(InputEvent.BUTTON1_DOWN_MASK); 
       auto.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); 
       // 
       auto.delay(8000); 
       auto.mouseMove(705, 652); 
       auto.mousePress(InputEvent.BUTTON1_DOWN_MASK); 
       auto.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); 

      } catch (AWTException e) { 
       e.printStackTrace(); 
      } 
      } 
     }  }); 
    btnStart.setBounds(10, 47, 89, 23); 
    frame.getContentPane().add(btnStart); 

    JCheckBox chckbxNewCheckBox = new JCheckBox("New check box"); 
    chckbxNewCheckBox.setBounds(2, 7, 97, 23); 
    frame.getContentPane().add(chckbxNewCheckBox); 
} 

Robotumun komutlarını bir döngü içine koymayla ilgili bazı önerilerde bulunmak istiyorum ve döngü yalnızca bir onay kutusu seçildiğinde yürütülür. Bunu yapmanın birkaç farklı yolunu denedim ama hiçbiri çalışmıyor gibi görünüyor. Eminim ki basit bir şeyi özlüyorum ama ne olduğunu anlayamıyorum. Benim için yapmama yardımcı olsa da, bunu açıklamak harika olurdu. Eclipse ve öğeleri eklemek için pencere üreticisi kullanıyorum.Java döngüsü yalnızca onay kutusu seçiliyse

+0

Ayrıca, komutları durdurmanın bir yolu muhtemelen yardımcı olabilir. –

cevap

0

Böyle bir şey yapabilirsiniz:

while(CheckBox.isSelected()) { 
    // do the stuff 
} 

Güncelleme: Şimdi soru anlıyorum. Ayrı bir iş parçacığında uzun süre görev yürütmek iyidir, bu nedenle görevi gerçekleştirmek için SwingWorker'u kullanabilirsiniz. Farklı bir iş parçacığı içinde komutları çalıştırabilir

: Eğer iplik kullanmazsanız, o zaman UI

+0

Bunu denedim, ancak bir sebepten dolayı IDE yaptığım onay kutusunu bulamadı ve bana bir hata vermeye devam etti. –

+0

IDE'ye ait değil, IDE sadece kod yazarak başka bir şey kullanmıyor. –

+0

Bunu bir kez daha deneyeceğim ve açıklamaya çalıştığım hatayı yayınlayacağım. –

1

Kullanım ipler while döngü tarafından asmak oldu. UI kendi iş parçasında çalışıyor olacak.

size yeni bir kod yazabilirsiniz;

Class Robot implements Runnable{ 
    public void run(){ 
    while(programRunning)){ 
    if(checkBox.isSelected()) 
     { 
     //Perform commands. 
     } 
    else {// you may choose to sleep this thread here as well in case of not selected} 
    } 
    } 

} 

programRunning araçlar bölümündeki seçili olmasa bile çalışan döngü tutmak üzere seçebilir başka değişkendir ve UI program/uygulama hala çalışıyor olduğunu.