JAVA 作業系統已經來到第五個版本了 現陸續放出三個版本 這是第二個版本

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

F:/text/pai.png


F:/text/lan2.png
F:/text/no.png
F:/text/lan.png
 

 

相關文章