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