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