Суббота, 2025-02-08, 00:00:44
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Три таймера
MINIshaДата: Суббота, 2011-10-29, 22:17:35 | Сообщение # 1
Генерал-майор
Группа: Администраторы
Сообщений: 21
Репутация: 1293
Статус: Offline
Code

import java.awt.event.*;   

import javax.swing.*;   

public  class ThreeTimers extends javax.swing.JFrame {
   JButton    button1 = new javax.swing.JButton();
      JButton    button2 = new javax.swing.JButton();
      JButton    button3 = new javax.swing.JButton();
      JButton    button4 = new javax.swing.JButton();
      JTextField    field1 = new javax.swing.JTextField();
      JTextField   field2 = new javax.swing.JTextField();
      JTextField    field3 = new javax.swing.JTextField();
      JTextField  field4 = new javax.swing.JTextField();
      boolean stop, run = false;
      boolean stop1, run1 = false;
      boolean stop2, run2 = false;
      int flag, flag1, flag2 ;
      int value = 0;
      int value1 = 0;
      int value2 = 0;
      Thread t, t1, t2, t3;
      double s;
        
      public ThreeTimers() {
         initComponents();
     }
               
      public void initComponents() {
                    
          setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
          button1.setText("СТАРТ");         
          button2.setText("СТОП");
          button3.setText("СТОП");
          button4.setText("СТОП");         
          button1.addActionListener(new ActionListener() {              
     public void actionPerformed(ActionEvent e) {
      if (!run){
      flag = 0;
      flag1 = 0;
      flag2 = 0;
         
      if (field4.getText().length()==0)
       System.out.println("ktktk");
      else{
      s = Integer.parseInt(field4.getText());
      try {
        t = new Thread(){            
            public void run(){
             stop = false;
             run = true;
             flag = 1;
              for (int i = 0; i<s/3; i++){
              if(stop) break;
              value++;
               field1.setText(""+value);              
               try {
               Thread.sleep(100);
              } catch (InterruptedException e) {              
               e.printStackTrace();
                  }
          }
              flag = -1;
              stop = true;
              run = false;
             System.out.println(stop+" "+" "+run);
              }
           };           
            t1 = new Thread(){            
            public void run(){
          flag1 = 1;
             stop1 = false;
             run1 = true;             
              for (int i = 0; i<s/3; i++){
              if(stop1) break;
              value1++;
               field2.setText(""+value1);              
               try {
               Thread.sleep(100);
              } catch (InterruptedException e) {              
               e.printStackTrace();
                  }
             }
              flag1 = -1;
              stop1 = true;
              run1 = false;
             System.out.println(stop1+" "+" "+run1);
              }
           };
          t2 = new Thread(){      
              public void run(){
              flag2 = 1;
              stop2 = false;
              run2 = true;      
               for (int i = 0; i<s/3; i++){
              if(stop2) break;
              value2++;
               field3.setText(""+value2);      
               try {
              Thread.sleep(100);
              } catch (InterruptedException e) {      
              e.printStackTrace();
              }
            }
               flag2 = -1;
               stop2 = true;
               run2 = false;
               System.out.println(stop2+" "+" "+run2);
              }
            };
            
           t.start();
          button1.setEnabled(false);
            
           }
      catch(IllegalThreadStateException j){
       System.out.println("Что-то произошло!!!");
          }                    
           }     
         }           
       }   
    });
      t3 = new Thread(){//Пришлось ввести 3-й поток с бесконечным циклом с опросом состояния потоков
        public void run(){
           
         while(flag!=-2){//бесконечный цикл с опросом состояния потоков
          try {
              Thread.sleep(10);
              } catch (InterruptedException e) {      
              e.printStackTrace();
              }
          if ((flag==-1)&&(!run1)){
          if ((flag==-1)&&(flag1==-1)&&(flag2==-1))
              button1.setEnabled(true);    
          try{
          t1.start();
        
          }
      catch (IllegalThreadStateException d){} }
        
      if ((flag1==-1)&&(flag2!=1)&&(!run2)){
            
     try{
      t2.start();
      }
         catch (IllegalThreadStateException d){}}                       
        }
     }
     };
         t3.start();
           
               
            
          button2.addActionListener(new ActionListener() {        
     public void actionPerformed(ActionEvent arg0) {     
              stop = true;      
         }
    });
          button3.addActionListener(new ActionListener() {        
     public void actionPerformed(ActionEvent e) {
              stop1 = true;      
         }
    });
          button4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
          stop2 = true;
      }
});
            
        //Это придумали Свингеры!!!
          javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
          getContentPane().setLayout(layout);
          layout.setHorizontalGroup(
              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
              .addGroup(layout.createSequentialGroup()
                  .addContainerGap()
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                      .addComponent(button2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                      .addComponent(button1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                      .addComponent(field1))
                  .addGap(57, 57, 57)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                      .addComponent(field4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                          .addComponent(field2, javax.swing.GroupLayout.Alignment.TRAILING)
                          .addComponent(button3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 69, Short.MAX_VALUE)))
                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 101, Short.MAX_VALUE)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                      .addComponent(field3)
                      .addComponent(button4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                  .addContainerGap())
          );
          layout.setVerticalGroup(
              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
              .addGroup(layout.createSequentialGroup()
                  .addGap(21, 21, 21)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                      .addComponent(button1)
                      .addComponent(field4, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 156, Short.MAX_VALUE)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                      .addComponent(field1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                      .addComponent(field3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                      .addComponent(field2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                  .addGap(18, 18, 18)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                      .addComponent(button2)
                      .addComponent(button4)
                      .addComponent(button3))
                  .addGap(39, 39, 39))
          );

          pack();//Офигеть можно!!!
      }
           
   public static void main (String[] args) {
            
          try {
              for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                  if ("Nimbus".equals(info.getName())) {
                      javax.swing.UIManager.setLookAndFeel(info.getClassName());
                      break;
                  }
              }
          } catch (ClassNotFoundException ex) {
              java.util.logging.Logger.getLogger(ThreeTimers.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          } catch (InstantiationException ex) {
              java.util.logging.Logger.getLogger(ThreeTimers.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          } catch (IllegalAccessException ex) {
              java.util.logging.Logger.getLogger(ThreeTimers.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          } catch (javax.swing.UnsupportedLookAndFeelException ex) {
              java.util.logging.Logger.getLogger(ThreeTimers.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          }
            
          java.awt.EventQueue.invokeLater(new Runnable() {

              public void run() {
                  new ThreeTimers().setVisible(true);
              }
          });
      }
}


Очень жду комментов!!! biggrin :D biggrin

Теперь займусь CyclicBarrier'ами! eek :eek: eek


Почему? ДА ЧЕРЕЗ ПОТОМУ КАК ЧТОЖ!

Сообщение отредактировал MINIsha - Понедельник, 2011-10-31, 18:01:54
 
CHerryДата: Воскресенье, 2011-10-30, 22:04:06 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 141
Репутация: 3732
Статус: Offline
Quote (MINIsha)
Очень жду комментов!!! biggrin biggrin biggrin

Спасибо за пробелы вместо табуляций и размещение в тэге [ code ], легко читать!
Жаль нет комментариев внутри кода.
 
  • Страница 1 из 1
  • 1
Поиск: