第三版本

範銘祥發表於2015-05-10
 1 package System4;
 2 
 3 import java.awt.BorderLayout;
 4 import java.awt.Color;
 5 import java.awt.GridLayout;
 6 import javax.swing.ImageIcon;
 7 import javax.swing.JButton;
 8 import javax.swing.JLabel;
 9 import javax.swing.JPanel;
10 import javax.swing.JTextField;
11 
12 class outrun extends face5 implements Runnable
13 {
14     public void rebuild()
15     {
16         gettime2();
17         Atime=all2-all1;
18         jbt2=new JButton(Atime+"秒");
19         jbt2.setBackground(Color.RED);
20         jbt2.setFont(new   java.awt.Font("Dialog",   1,   77));
21         jbt2.setForeground(Color.black);
22         jp222.add(jbt2);
23 //        jp2.add(jp222,BorderLayout.EAST);
24 //        jp1.setLayout(new GridLayout(2,1));
25 //        jp1.add(jlb1);
26 //        jp1.add(jp2);        
27 //        jp0.add(jp1,BorderLayout.NORTH);
28 //        顯示
29         this.setSize(1270,600);
30         this.setLocation(60,50);
31         this.setResizable(false);
32         this.setTitle("微型作業系統3合一");
33         this.setVisible(true);
34     }
35     @Override
36     public void run() 
37     {
38         gettime();
39         while(true)
40         {
41             try {
42                 Thread.sleep(1000);
43             } catch (Exception e) {
44                 // TODO: handle exception
45             }
46             rebuild();
47         }
48         
49     }
50     
51 }
  1 package System4;
  2 
  3 import java.awt.*;
  4 import java.awt.event.ActionEvent;
  5 import java.awt.event.ActionListener;
  6 import java.util.*;
  7 import javax.swing.*;
  8 
  9 /**
 10  * 作者:範銘祥
 11  * 內容及功能:   顯示框創造1.0
 12  * 我將在這個類裡          一:皮膚1:用來先顯示一副圖表示順序和處理中
 13  *                    二:皮膚2:類1:用來顯示要處理的項 接收 A在排隊的顏色任務圖  
 14  *                                              B在處理中的顏色任務圖
 15  *                          包含了四個類:1 PCB類  2先來先服類
 16  *                       3 短作業優先演算法  4 響應比者高優先演算法
 17  *                       注:以上均採用ArrayList集合的方法
 18  *               四:皮膚4:2個按鈕 1個Text文字框   
 19  * 按鈕1對應每3個分頁框      按鈕2對應3個分頁框 分別有三種不同的做法
 20  * text文字接收  按鈕一傳來的頁框號從而 獲取相應的分頁框資訊
 21  * 
 22  *第一次日誌: 監聽的事件處理方法變數是出不來,但方法可進進哦。
 23  *                明天我就試在原類更新皮膚,因為使用者是錄完才點選開始按鈕,所以不斷重新整理不影響使用者
 24  *            輸入。
 25  *第二次日誌:當我做完了整個介面face2看完效果後,當時我就不樂意了,因為如果使用者要在不同的面版上
 26  *輸入3次才可完全享受3中作業系統處理方法,最讓我難受的是不能單獨重新整理皮膚的某一部分,所以我只能
 27  *採用重新整理JFrame的方法,終於實現了時間不斷自動跳轉但問題出現了,使用者的輸入接面也在不斷重新整理
 28  *
 29  *第三次日誌:解決了使用者要輸入3次的不好,現在要改變使用者皮膚不斷重新整理的問題,因為要將建新類來啟動重新整理
 30  *這將是個大工程,呵呵 事實證明我的想法可行終於解決了皮膚區域性重新整理問題,這解決方法有點像多型
 31  *現在出現了一個新問題 想到了新問題來解決——要改變排序圖的佈局 這個方案作出來的介面更好看
 32  */
 33 public class face5 extends JFrame implements ActionListener{
 34       /*其它*/        int choose=0;
 35                 
 36     /*外圍*/        JPanel jp0;
 37                 JSplitPane jsp;//可收縮皮膚
 38                 JTextArea jta;
 39                 JScrollPane gun;//設定滾動框
 40                 
 41     /*1*/        JLabel jlb1;
 42                 JPanel jp1;
 43             
 44     /*2*/    
 45                 JPanel jp2;
 46                 JPanel jp22;
 47                 JPanel jp222;
 48                 JButton jbt2;//用來接替第二部分   
 49                 JLabel[] no = new JLabel[11];
 50                 JLabel[] lan= new JLabel[11];
 51                 JLabel lan2;
 52                 public int all1;
 53                 int Atime=all1;
 54                 public int all2;
 55                 int now;
 56     /*2x*/
 57                 JPanel x2,x2_1,x2_2,x2_3;
 58                 JCheckBox jcb_1,jcb_2,jcb_3;//選擇按鈕
 59                 ButtonGroup bg;//only one選擇組
 60                 
 61     /*3*/    JPanel jp_1;//屬於 jp3 屬於第三部分的分頁框皮膚
 62                 
 63                 //
 64                 /*以下部分很重要 是該系統一大部分 錄入*/
 65                 //
 66                 JPanel[] jp2a_1=new JPanel[12];
 67                 JLabel[] jl2b_1=new JLabel[12];//打是X任務標籤的
 68                 JLabel jl2c1_1[]=new JLabel[12];
 69                 JLabel jl2c2_1[]=new JLabel[12];
 70                     
 71                 
 72     /*4*/        JPanel jp4,jp4x2;            
 73                 JButton jb_1,jb_2;
 74         public static final int one_ge = 50;//代表一幅圖的寬度        
 75                 
 76         public static void main(String[] args) 
 77         {
 78             // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 79             face5 face55=new face5();
 80             //啟動face33執行緒
 81         }
 82         public face5()
 83         {    //全部在這定義
 84             jp0=new JPanel();
 85             jsp=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
 86     /*可以伸縮*/jsp.setOneTouchExpandable(true);
 87             jta=new JTextArea("!!!以後操作細節將在這裡顯示!!!\n");
 88             gun=new JScrollPane(jta);
 89             jlb1=new JLabel(new ImageIcon("F:/text/pai.png"));
 90             jp1=new JPanel();
 91             
 92             jp2=new JPanel();
 93             jp22=new JPanel();
 94             jp222=new JPanel();
 95             jbt2=new JButton(Atime+"秒");
 96             jbt2.setBackground(Color.RED);
 97             jbt2.setFont(new   java.awt.Font("Dialog",   1,   77));
 98             jbt2.setForeground(Color.black);
 99             x2=new JPanel();
100             x2.setLayout(new BorderLayout());
101             x2_1=new JPanel();
102             x2_2=new JPanel();
103             x2_3=new JPanel();
104             jcb_1=new JCheckBox("先來先服務");
105             jcb_2=new JCheckBox("短作業優先");
106             jcb_3=new JCheckBox("響應比者高優先");
107             //一定要把 jrb1 jrb2 放入到一個ButtonGroup
108             ButtonGroup bg=new ButtonGroup();
109             bg.add(jcb_1);
110             bg.add(jcb_2);
111             bg.add(jcb_3);
112             x2_2.add(jcb_1);
113             x2_2.add(jcb_2);
114             x2_2.add(jcb_3);
115             x2.add(x2_1,BorderLayout.WEST);
116             x2.add(x2_2,BorderLayout.CENTER);
117             x2.add(x2_3,BorderLayout.EAST);
118             jp_1=new JPanel();
119             jp_1.setLayout(new GridLayout(1,11));        
120             JTextField jtf21_1[]=new JTextField[12];
121             JTextField jtf22_1[]=new JTextField[12];
122             //第一復頁皮膚
123             for(int i=1;i<=11;i++)
124             {
125                 jp2a_1[i]=new JPanel();
126                 jl2c1_1[i]=new JLabel("到達時間(秒)");
127                 jl2c1_1[i].setFont(new   java.awt.Font("宋體",   1,   10));
128                 jl2c1_1[i].setForeground(Color.red);
129                 jl2c2_1[i]=new JLabel("執行時間(秒)");
130                 jl2c2_1[i].setFont(new   java.awt.Font("宋體",   1,   10));
131                 jl2c2_1[i].setForeground(Color.blue);
132                 jtf21_1[i]=new JTextField(5);        
133                 jtf21_1[i].setFont(new   java.awt.Font("宋體",   1,   35));
134                 jtf21_1[i].setForeground(Color.red);
135                 jtf22_1[i]=new JTextField(5);
136                 jtf22_1[i].setFont(new   java.awt.Font("宋體",   1,   35));
137                 jtf22_1[i].setForeground(Color.blue);
138                 jp2a_1[i].setLayout(new GridLayout(5,1));
139 
140                 switch(i)
141                 {
142                 case 1:
143                     jl2b_1[i]=new JLabel(" 任務A");
144                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   30));
145                     jl2b_1[i].setForeground(Color.red);
146                     break;
147                 case 2:
148                     jl2b_1[i]=new JLabel(" 任務B");
149                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   15));
150                     jl2b_1[i].setForeground(Color.red);
151                     break;
152                 case 3:
153                     jl2b_1[i]=new JLabel(" 任務C");
154                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   15));
155                     jl2b_1[i].setForeground(Color.red);
156                     break;
157                 case 4:
158                     jl2b_1[i]=new JLabel(" 任務D");
159                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   15));
160                     jl2b_1[i].setForeground(Color.red);
161                     break;
162                 case 5:
163                     jl2b_1[i]=new JLabel(" 任務E");
164                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   15));
165                     jl2b_1[i].setForeground(Color.red);
166                     break;
167                 case 6:
168                     jl2b_1[i]=new JLabel(" 任務F");
169                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   15));
170                     jl2b_1[i].setForeground(Color.red);
171                     break;
172                 case 7:
173                     jl2b_1[i]=new JLabel(" 任務G");
174                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   15));
175                     jl2b_1[i].setForeground(Color.red);
176                     break;
177                 case 8:
178                     jl2b_1[i]=new JLabel(" 任務H");
179                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   15));
180                     jl2b_1[i].setForeground(Color.red);
181                     break;
182                 case 9:
183                     jl2b_1[i]=new JLabel(" 任務I");
184                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   15));
185                     jl2b_1[i].setForeground(Color.red);
186                     break;
187                 case 10:
188                     jl2b_1[i]=new JLabel(" 任務J");
189                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   15));
190                     jl2b_1[i].setForeground(Color.red);
191                     break;
192                 case 11:
193                     jl2b_1[i]=new JLabel(" 任務K");
194                     jl2b_1[i].setFont(new   java.awt.Font("宋體",   1,   15));
195                     jl2b_1[i].setForeground(Color.red);
196                     break;
197                 }
198                 jp2a_1[i].add(jl2b_1[i]);
199                 jp2a_1[i].add(jl2c1_1[i]);
200                 jp2a_1[i].add(jtf21_1[i]);
201                 jp2a_1[i].add(jl2c2_1[i]);
202                 jp2a_1[i].add(jtf22_1[i]);
203                 jp_1.add(jp2a_1[i]);
204             }    
205             jp4x2=new JPanel();
206             jb_1=new JButton();
207             jb_2=new JButton();
208             lan2=new JLabel(new ImageIcon("F:/text/lan2.png"));
209             jp0.setLayout(new BorderLayout());
210             //第一欄
211             jp1.setLayout(new GridLayout(2,1));            
212             jp1.add(jlb1);        
213             jp2.setLayout(new BorderLayout());    
214 
215             jp2.add(jp22,BorderLayout.CENTER);
216             jp1.add(jp2);
217     /*將等待圖加到jp22*/jp22.setLayout(null);
218                     jp22.setBackground(Color.WHITE);
219                     for (int i = 0; i<11; i++) 
220                     { 
221                         no[i] = new JLabel(new ImageIcon("F:/text/no.png"));
222                         jp22.add(no[i]);
223                         no[i].setBounds(i*48+14*i, 0, 48, 134);
224                         lan[i] =new JLabel(new ImageIcon("F:/text/lan.png"));
225                         jp22.add(lan[i]);
226                         lan[i].setBounds((i-1)*14+i*48,0 , 14, 134);
227                         /* 控制影象的位置大小 */
228                     }
229                     jp22.add(lan2);
230                     lan2.setBounds(863,0,14, 134);
231             jp222.add(jbt2);
232             jp2.add(jp222,BorderLayout.EAST);
233             //第四欄
234             jp4x2=new JPanel();
235             jp4x2.setLayout(new GridLayout(2,1));
236             jp4=new JPanel();
237             jp4.setLayout(new GridLayout(1,2));
238             jb_1=new JButton("確定錄完");
239             jb_2=new JButton("開始任務");
240             jp4x2.add(x2);
241             jp4x2.add(jp4);
242     /*註冊開始鍵監聽*/    
243             jb_2.addActionListener(this);
244             jb_2.setActionCommand("aa");
245             jb_1.setBackground(Color.pink);
246             jb_2.setBackground(Color.green);
247             jp4.add(jb_1);
248             jp4.add(jb_2);
249             //按1,2,3欄的順序新增皮膚進jp0
250             jp0.add(jp1,BorderLayout.NORTH);
251             jp0.add(jp_1,BorderLayout.CENTER);
252             jp0.add(jp4x2,BorderLayout.SOUTH);
253             //把jp0和textAreaz裝進拉伸版
254             jsp.add(jp0);
255             jsp.add(gun);
256             this.add(jsp);
257             //顯示
258             this.setSize(1270,600);
259             this.setLocation(60,50);
260             this.setResizable(false);
261             this.setTitle("微型作業系統3合一");
262             this.setVisible(true);
263         }
264         public void gettime()//獲取時間的方法
265         {
266             Calendar c = Calendar.getInstance(); 
267             int gominute = c.get(Calendar.MINUTE); 
268             int gosecond = c.get(Calendar.SECOND);
269             int time=gominute*60+gosecond;
270             all1=time;
271         }
272         public void gettime2()//獲取時間的方法
273         {
274             Calendar c = Calendar.getInstance(); 
275             int gominute = c.get(Calendar.MINUTE); 
276             int gosecond = c.get(Calendar.SECOND);
277             int time=gominute*60+gosecond;
278             all2=time;
279         }
280         public void rungo()
281         {
282             choose=1;
283         }
284         public void go()
285         {
286             outrun reface=new outrun();
287             Thread yy=new Thread(reface);
288             if(choose==1)
289             {
290             yy.start();
291             }
292         }
293         @Override
294         public void actionPerformed(ActionEvent e) //事件處理時欲要改變外界的值應該傳進方法
295         {
296             if (e.getActionCommand().equals("aa")) 
297             {
298                 rungo();
299                 System.out.println(all1);
300                 go();
301             }
302             
303         }
304 }

 

相關文章