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 }