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 }