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 }