MINIsha | Дата: Суббота, 2011-10-29, 22:17:35 | Сообщение # 1 |
![MINIsha](/avatar/89/323772.jpg) Генерал-майор
Группа: Администраторы
Сообщений: 21
Статус: 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); } }); } }
Очень жду комментов!!! :D
Теперь займусь CyclicBarrier'ами! :eek:
Почему? ДА ЧЕРЕЗ ПОТОМУ КАК ЧТОЖ!
Сообщение отредактировал MINIsha - Понедельник, 2011-10-31, 18:01:54 |
|
| |
CHerry | Дата: Воскресенье, 2011-10-30, 22:04:06 | Сообщение # 2 |
![CHerry](/avatar/97/8071-240618.gif) Генералиссимус
Группа: Администраторы
Сообщений: 141
Статус: Offline
| Quote (MINIsha) Очень жду комментов!!! biggrin ![biggrin](http://s49.ucoz.net/sm/1/biggrin.gif) biggrin Спасибо за пробелы вместо табуляций и размещение в тэге [ code ], легко читать! Жаль нет комментариев внутри кода.
|
|
| |