Java2实用教程(第二版)程序代码——第十五章 建立窗口和菜单
1//例子1
2import java.awt.*;import java.awt.event.*;
3class MyFrame extends Frame implements ItemListener,ActionListener
4{ Checkbox box; TextArea text; Button button;
5 MyFrame(String s)
6 { super(s);
7 box=new Checkbox("设置窗口是否可调整大小");
8 text=new TextArea(12,12);
9 button=new Button("关闭窗口");
10 button.addActionListener(this);
11 box.addItemListener(this);
12 setBounds(100,100,200,300);
13 setVisible(true);
14 add(text,BorderLayout.CENTER);
15 add(box,BorderLayout.SOUTH);
16 add(button,BorderLayout.NORTH);
17 setResizable(false);
18 validate();
19 }
20 public void itemStateChanged(ItemEvent e)
21 { if(box.getState()==true)
22 { setResizable(true);
23 }
24 else
25 { setResizable(false);
26 }
27 }
28 public void actionPerformed(ActionEvent e)
29 { dispose();
30 }
31}
32class Example15_1
33{ public static void main(String args[])
34 { new MyFrame("窗口");
35 }
36}
37
38//例子2
39import java.awt.*;import java.awt.event.*;
40class MyFrame extends Frame implements ItemListener,ActionListener
41{ Checkbox box; Button button;
42 Toolkit tool; Dimension dim;
43 MyFrame(String s)
44 { super(s);
45 box=new Checkbox("设置窗口和屏幕同样大小");
46 add(box,BorderLayout.SOUTH);
47 button=new Button("关闭窗口"); button.addActionListener(this);
48 box.addItemListener(this);
49 setBounds(100,100,200,300); setVisible(true);
50 add(box,BorderLayout.SOUTH); add(button,BorderLayout.NORTH);
51 tool=getToolkit();
52 validate();
53 }
54 public void itemStateChanged(ItemEvent e)
55 { if(box.getState()==true)
56 { dim=tool.getScreenSize();
57 setBounds(0,0,dim.width,dim.height);
58 validate();
59 }
60 else
61 { setBounds(0,0,dim.width,80);
62 validate();
63 }
64 }
65 public void actionPerformed(ActionEvent e)
66 { dispose();
67 }
68}
69class Example15_2
70{ public static void main(String args[])
71 {new MyFrame("窗口");
72 }
73}
74
75//例子3
76import java.awt.*;import java.awt.event.*;
77class 圆 extends Panel implements ActionListener//负责计算圆面积的类。
78{ double r,area;
79 TextField 半径=null,
80 结果=null;
81 Button b=null;
82 圆()
83 { 半径=new TextField(10);
84 结果=new TextField(10);
85 b=new Button("确定");
86 add(new Label("输入半径"));
87 add(半径);
88 add(new Label("面积是:"));
89 add(结果); add(b);
90 b.addActionListener(this);
91 }
92 public void actionPerformed(ActionEvent e)
93 { try
94 { r=Double.parseDouble(半径.getText());
95 area=Math.PI*r*r;
96 结果.setText(""+area);
97 }
98 catch(Exception ee)
99 { 半径.setText("请输入数字字符");
100 }
101 }
102}
103class 三角形 extends Panel implements ActionListener//负责计算三角形面积的类。
104{ double a=0,b=0,c=0,area;
105 TextField 边_a=new TextField(6),
106 边_b=new TextField(6),
107 边_c=new TextField(6),
108 结果=new TextField(24);
109 Button button=new Button("确定");
110 三角形()
111 { add(new Label("输入三边的长度:"));
112 add(边_a); add(边_b); add(边_c);
113 add(new Label("面积是:"));
114 add(结果); add(button);
115 button.addActionListener(this);
116 }
117 public void actionPerformed(ActionEvent e)//获取三边的长度。
118 { try{ a=Double.parseDouble(边_a.getText());
119 b=Double.parseDouble(边_b.getText());
120 c=Double.parseDouble(边_c.getText());
121 if(a+b>c&&a+c>b&&c+b>a)
122 { double p=(a+b+c)/2;
123 area=Math.sqrt(p*(p-a)*(p-b)*(p-c));//计算三角形的面积。
124 结果.setText(""+area);
125 }
126 else
127 { 结果.setText("您输入的数字不能形成三角形");
128 }
129 }
130 catch(Exception ee)
131 { 结果.setText("请输入数字字符");
132 }
133 }
134}
135class Win extends Frame implements ActionListener
136{ MenuBar bar=null; Menu menu=null;
137 MenuItem item1, item2;
138 圆 circle ;
139 三角形 trangle;
140 Win()
141 { bar=new MenuBar(); menu=new Menu("选择");
142 item1=new MenuItem("圆面积计算"); item2=new MenuItem("三角形面积计算");
143 menu.add(item1); menu.add(item2);
144 bar.add(menu);
145 setMenuBar(bar);
146 circle=new 圆();
147 trangle=new 三角形(); //创建一个圆和一个三角形。
148 item1.addActionListener(this); item2.addActionListener(this);
149 setVisible(true); setBounds(100,120,100,90);
150 }
151 public void actionPerformed(ActionEvent e)
152 { if(e.getSource()==item1)
153 { removeAll();
154 add(circle,"Center");//添加圆面积计算的界面。
155 validate();
156 }
157 else if(e.getSource()==item2)
158 { removeAll();
159 add(trangle,"Center");//添加三角形面积计算的界面。
160 validate();
161 }
162 }
163}
164public class Example15_3
165{ public static void main(String args[])
166 { Win win=new Win();win.setBounds(100,100,200,100);win.setVisible(true);
167 win.addWindowListener(new WindowAdapter()
168 { public void windowClosing(WindowEvent e)
169 { System.exit(0);
170 }
171 });
172 }
173}
174
175//例子4
176import java.awt.*;import java.awt.event.*;
177class Herwindow extends Frame implements ActionListener
178{ MenuBar menubar;Menu menu;MenuItem item;
179 MenuShortcut shortcut=new MenuShortcut(KeyEvent.VK_E);
180 Herwindow(String s)
181 { super(s);
182 setSize(160,170);setVisible(true);
183 menubar=new MenuBar(); menu=new Menu("文件");
184 item=new MenuItem("退出");
185 item.setShortcut(shortcut); //设置菜单选项的键盘快捷键。
186 item.addActionListener(this);
187 menu.add(item);
188 menubar.add(menu);menubar.add(menu);
189 setMenuBar(menubar);
190 }
191 public void actionPerformed(ActionEvent e)
192 { if(e.getSource()==item)
193 { System.exit(0);
194 }
195 }
196}
197public class Example15_4
198{ public static void main(String args[])
199 { Herwindow window=new Herwindow("法制之窗");
200 }
201}
202
203//例子5
204import java.awt.*;import java.awt.event.*;
205class MyFrame extends Frame implements WindowListener
206{ TextArea text;
207 MyFrame(String s)
208 { super(s);
209 setBounds(100,100,200,300);
210 setVisible(true);
211 text=new TextArea();
212 add(text,BorderLayout.CENTER);
213 addWindowListener(this);
214 validate();
215 }
216 public void windowActivated(WindowEvent e)
217 { text.append("\n我被激活");
218 validate();
219 }
220 public void windowDeactivated(WindowEvent e)
221 { text.append("\n我不是激活状态了");
222 setBounds(0,0,400,400); validate();
223 }
224 public void windowClosing(WindowEvent e)
225 { text.append("\n窗口正在关闭呢"); dispose();
226 }
227 public void windowClosed(WindowEvent e)
228 { System.out.println("程序结束运行");
229 System.exit(0);
230 }
231 public void windowIconified(WindowEvent e)
232 { text.append("\n我图标化了");
233 }
234 public void windowDeiconified(WindowEvent e)
235 { text.append("\n我撤消图标化");
236 setBounds(0,0,400,400);validate();
237 }
238 public void windowOpened(WindowEvent e){ }
239}
240class Example15_5
241{ ublic static void main(String args[])
242 { new MyFrame("窗口");
243 }
244}
245
246//例子6
247import java.awt.*;import java.awt.event.*;
248class MyFrame extends Frame
249{ TextArea text; Boy police;
250 MyFrame(String s)
251 { super(s);
252 police=new Boy(this);
253 setBounds(100,100,200,300); setVisible(true);
254 text=new TextArea(); add(text,BorderLayout.CENTER);
255 addWindowListener(police); validate();
256 }
257}
258class Boy extends WindowAdapter
259{ MyFrame f;
260 public Boy(MyFrame f)
261 { this.f=f;
262 }
263 public void windowActivated(WindowEvent e)
264 { f.text.append("\n我被激活");
265 }
266 public void windowClosing(WindowEvent e)
267 { System.exit(0);
268 }
269}
270class Example15_6
271{ public static void main(String args[])
272 { new MyFrame("窗口");
273 }
274}
275
276//例子7
277import java.awt.*;import java.awt.event.*;
278class MyFrame extends Frame
279{ TextArea text;
280 MyFrame(String s)
281 { super(s);
282 setBounds(100,100,200,300);setVisible(true);
283 text=new TextArea(); add(text,BorderLayout.CENTER);
284 addWindowListener(new WindowAdapter()
285 { public void windowActivated(WindowEvent e)
286 { text.append("\n我被激活");
287 }
288 public void windowClosing(WindowEvent e)
289 { System.exit(0);
290 }
291 }
292 );
293 validate();
294 }
295}
296class Example15_7
297{ public static void main(String args[])
298 { new MyFrame("窗口");
299 }
300}
301
302//例子8
303import java.applet.*;import java.awt.*;import java.awt.event.*;
304public class Example15_8 extends Applet
305{ Frame f,g;
306 public void init()
307 { f=new Frame("音乐之窗");g=new Frame("体育之窗");
308 f.setSize(150,150); f.setVisible(true);
309 g.setSize(200,200); g.setVisible(false);
310 f.addWindowListener(new WindowAdapter()
311 { public void windowClosing(WindowEvent e)
312 { f.setVisible(false);
313 g.setVisible(true);
314 }
315 } ); //适配器
316 g.addWindowListener(new WindowAdapter()
317 {public void windowClosing(WindowEvent e)
318 { g.setVisible(false);
319 f.setVisible(true);
320 }
321 } );
322 }
323}
324
325//例子9
326import java.awt.*;import java.awt.event.*;
327public class Example15_9
328{ public static void main(String args[])
329 { MyFrame f=new MyFrame();
330 f.setBounds(70,70,70,89);f.setVisible(true);f.pack();
331 }
332}
333class MyFrame extends Frame implements ActionListener
334{ PrintJob p=null; //声明一个PrintJob对象。
335 Graphics g=null;
336 TextArea text=new TextArea(10,10);
337 Button 打印文本框=new Button("打印文本框"),
338 打印窗口=new Button("打印窗口"),
339 打印按扭=new Button("打印按扭");
340 MyFrame()
341 { super("在应用程序中打印");
342 打印文本框.addActionListener(this);
343 打印窗口.addActionListener(this);
344 打印按扭.addActionListener(this);
345 add(text,"Center");
346 Panel panel=new Panel();
347 panel.add(打印文本框); panel.add(打印窗口); panel.add(打印按扭);
348 add(panel,"South");
349 addWindowListener(new WindowAdapter()
350 {public void windowClosing(WindowEvent e)
351 {System.exit(0); }
352 });
353 }
354public void actionPerformed(ActionEvent e)
355 { if(e.getSource()==打印文本框)
356 { p=getToolkit().getPrintJob(this,"ok",null);
357//创建一个PrintJob对象p 。
358 g=p.getGraphics(); //p获取一个用于打印的 Graphics对象。
359 g.translate(120,200);
360 text.printAll(g);
361 g.dispose(); //释放对象 g。
362 p.end();
363 }
364 else if(e.getSource()==打印窗口)
365 { p=getToolkit().getPrintJob(this,"ok",null);
366 g=p.getGraphics(); //p获取一个用于打印的 Graphics对象。
367 g.translate(120,200);
368 this.printAll(g); //打印当前窗口及其子组件。
369 g.dispose(); //释放对象 g。
370 p.end();
371 }
372 else if(e.getSource()==打印按扭)
373 { p=getToolkit().getPrintJob(this,"ok",null);
374 g=p.getGraphics();
375 g.translate(120,200); //在打印页的坐标(120,200)处打印第一个"按扭"。
376 打印文本框.printAll(g);
377 g.translate(78,0); //在打印页的坐标(198,200)处打印第二个"按扭"。
378 打印窗口.printAll(g);
379 g.translate(66,0); //在打印页的坐标(264,200)处打印第三个"按扭"。
380 打印按扭.printAll(g);
381 g.dispose();
382 p.end();
383 }
384 }
385}
386
387//例子10
388import java.awt.*;import java.awt.event.*;
389import java.awt.datatransfer.*;
390public class Example15_10 extends Frame implements ActionListener
391{ MenuBar menubar; Menu menu;
392 MenuItem copy,cut,paste;
393 TextArea text1,text2;
394 Clipboard clipboard=null;
395 Example15_10()
396 { clipboard=getToolkit().getSystemClipboard();//获取系统剪贴板。
397 menubar=new MenuBar();
398 menu=new Menu("Edit"); copy=new MenuItem("copy");
399 cut=new MenuItem ("cut"); paste=new MenuItem ("paste");
400 text1=new TextArea(20,20); text2=new TextArea(20,20);
401 copy.addActionListener(this); cut.addActionListener(this);
402 paste.addActionListener(this);
403 setLayout(new FlowLayout());
404 menubar.add(menu);
405 menu.add(copy); menu.add(cut); menu.add(paste);
406 setMenuBar(menubar);
407 add(text1);add(text2);
408 setBounds(100,100,200,250); setVisible(true);pack();
409 addWindowListener(new WindowAdapter()
410 {public void windowClosing(WindowEvent e)
411 {System.exit(0);
412 }
413 }) ;
414 }
415 public void actionPerformed(ActionEvent e)
416 { if(e.getSource()==copy) //拷贝到剪贴板。
417 { String temp=text1.getSelectedText(); //拖动鼠标选取文本。
418 StringSelection text=new StringSelection(temp);
419 clipboard.setContents(text,null);
420 }
421 else if(e.getSource()==cut) //剪贴到剪贴板。
422 { String temp=text1.getSelectedText(); //拖动鼠标选取文本。
423 StringSelection text=new StringSelection(temp);
424 clipboard.setContents(text,null);
425 int start=text1.getSelectionStart();
426 int end =text1.getSelectionEnd();
427 text1.replaceRange("",start,end) ; //从Text1中删除被选取的文本。
428 }
429 else if(e.getSource()==paste) //从剪贴板粘贴数据。
430 { Transferable contents=clipboard.getContents(this);
431 DataFlavor flavor= DataFlavor.stringFlavor;
432 if( contents.isDataFlavorSupported(flavor))
433 try{ String str;
434 str=(String)contents.getTransferData(flavor);
435 text2.append(str);
436 }
437 catch(Exception ee){}
438 }
439 }
440 public static void main(String args[])
441 { Example15_10 win=new Example15_10 ();
442 }
443}
444
2import java.awt.*;import java.awt.event.*;
3class MyFrame extends Frame implements ItemListener,ActionListener
4{ Checkbox box; TextArea text; Button button;
5 MyFrame(String s)
6 { super(s);
7 box=new Checkbox("设置窗口是否可调整大小");
8 text=new TextArea(12,12);
9 button=new Button("关闭窗口");
10 button.addActionListener(this);
11 box.addItemListener(this);
12 setBounds(100,100,200,300);
13 setVisible(true);
14 add(text,BorderLayout.CENTER);
15 add(box,BorderLayout.SOUTH);
16 add(button,BorderLayout.NORTH);
17 setResizable(false);
18 validate();
19 }
20 public void itemStateChanged(ItemEvent e)
21 { if(box.getState()==true)
22 { setResizable(true);
23 }
24 else
25 { setResizable(false);
26 }
27 }
28 public void actionPerformed(ActionEvent e)
29 { dispose();
30 }
31}
32class Example15_1
33{ public static void main(String args[])
34 { new MyFrame("窗口");
35 }
36}
37
38//例子2
39import java.awt.*;import java.awt.event.*;
40class MyFrame extends Frame implements ItemListener,ActionListener
41{ Checkbox box; Button button;
42 Toolkit tool; Dimension dim;
43 MyFrame(String s)
44 { super(s);
45 box=new Checkbox("设置窗口和屏幕同样大小");
46 add(box,BorderLayout.SOUTH);
47 button=new Button("关闭窗口"); button.addActionListener(this);
48 box.addItemListener(this);
49 setBounds(100,100,200,300); setVisible(true);
50 add(box,BorderLayout.SOUTH); add(button,BorderLayout.NORTH);
51 tool=getToolkit();
52 validate();
53 }
54 public void itemStateChanged(ItemEvent e)
55 { if(box.getState()==true)
56 { dim=tool.getScreenSize();
57 setBounds(0,0,dim.width,dim.height);
58 validate();
59 }
60 else
61 { setBounds(0,0,dim.width,80);
62 validate();
63 }
64 }
65 public void actionPerformed(ActionEvent e)
66 { dispose();
67 }
68}
69class Example15_2
70{ public static void main(String args[])
71 {new MyFrame("窗口");
72 }
73}
74
75//例子3
76import java.awt.*;import java.awt.event.*;
77class 圆 extends Panel implements ActionListener//负责计算圆面积的类。
78{ double r,area;
79 TextField 半径=null,
80 结果=null;
81 Button b=null;
82 圆()
83 { 半径=new TextField(10);
84 结果=new TextField(10);
85 b=new Button("确定");
86 add(new Label("输入半径"));
87 add(半径);
88 add(new Label("面积是:"));
89 add(结果); add(b);
90 b.addActionListener(this);
91 }
92 public void actionPerformed(ActionEvent e)
93 { try
94 { r=Double.parseDouble(半径.getText());
95 area=Math.PI*r*r;
96 结果.setText(""+area);
97 }
98 catch(Exception ee)
99 { 半径.setText("请输入数字字符");
100 }
101 }
102}
103class 三角形 extends Panel implements ActionListener//负责计算三角形面积的类。
104{ double a=0,b=0,c=0,area;
105 TextField 边_a=new TextField(6),
106 边_b=new TextField(6),
107 边_c=new TextField(6),
108 结果=new TextField(24);
109 Button button=new Button("确定");
110 三角形()
111 { add(new Label("输入三边的长度:"));
112 add(边_a); add(边_b); add(边_c);
113 add(new Label("面积是:"));
114 add(结果); add(button);
115 button.addActionListener(this);
116 }
117 public void actionPerformed(ActionEvent e)//获取三边的长度。
118 { try{ a=Double.parseDouble(边_a.getText());
119 b=Double.parseDouble(边_b.getText());
120 c=Double.parseDouble(边_c.getText());
121 if(a+b>c&&a+c>b&&c+b>a)
122 { double p=(a+b+c)/2;
123 area=Math.sqrt(p*(p-a)*(p-b)*(p-c));//计算三角形的面积。
124 结果.setText(""+area);
125 }
126 else
127 { 结果.setText("您输入的数字不能形成三角形");
128 }
129 }
130 catch(Exception ee)
131 { 结果.setText("请输入数字字符");
132 }
133 }
134}
135class Win extends Frame implements ActionListener
136{ MenuBar bar=null; Menu menu=null;
137 MenuItem item1, item2;
138 圆 circle ;
139 三角形 trangle;
140 Win()
141 { bar=new MenuBar(); menu=new Menu("选择");
142 item1=new MenuItem("圆面积计算"); item2=new MenuItem("三角形面积计算");
143 menu.add(item1); menu.add(item2);
144 bar.add(menu);
145 setMenuBar(bar);
146 circle=new 圆();
147 trangle=new 三角形(); //创建一个圆和一个三角形。
148 item1.addActionListener(this); item2.addActionListener(this);
149 setVisible(true); setBounds(100,120,100,90);
150 }
151 public void actionPerformed(ActionEvent e)
152 { if(e.getSource()==item1)
153 { removeAll();
154 add(circle,"Center");//添加圆面积计算的界面。
155 validate();
156 }
157 else if(e.getSource()==item2)
158 { removeAll();
159 add(trangle,"Center");//添加三角形面积计算的界面。
160 validate();
161 }
162 }
163}
164public class Example15_3
165{ public static void main(String args[])
166 { Win win=new Win();win.setBounds(100,100,200,100);win.setVisible(true);
167 win.addWindowListener(new WindowAdapter()
168 { public void windowClosing(WindowEvent e)
169 { System.exit(0);
170 }
171 });
172 }
173}
174
175//例子4
176import java.awt.*;import java.awt.event.*;
177class Herwindow extends Frame implements ActionListener
178{ MenuBar menubar;Menu menu;MenuItem item;
179 MenuShortcut shortcut=new MenuShortcut(KeyEvent.VK_E);
180 Herwindow(String s)
181 { super(s);
182 setSize(160,170);setVisible(true);
183 menubar=new MenuBar(); menu=new Menu("文件");
184 item=new MenuItem("退出");
185 item.setShortcut(shortcut); //设置菜单选项的键盘快捷键。
186 item.addActionListener(this);
187 menu.add(item);
188 menubar.add(menu);menubar.add(menu);
189 setMenuBar(menubar);
190 }
191 public void actionPerformed(ActionEvent e)
192 { if(e.getSource()==item)
193 { System.exit(0);
194 }
195 }
196}
197public class Example15_4
198{ public static void main(String args[])
199 { Herwindow window=new Herwindow("法制之窗");
200 }
201}
202
203//例子5
204import java.awt.*;import java.awt.event.*;
205class MyFrame extends Frame implements WindowListener
206{ TextArea text;
207 MyFrame(String s)
208 { super(s);
209 setBounds(100,100,200,300);
210 setVisible(true);
211 text=new TextArea();
212 add(text,BorderLayout.CENTER);
213 addWindowListener(this);
214 validate();
215 }
216 public void windowActivated(WindowEvent e)
217 { text.append("\n我被激活");
218 validate();
219 }
220 public void windowDeactivated(WindowEvent e)
221 { text.append("\n我不是激活状态了");
222 setBounds(0,0,400,400); validate();
223 }
224 public void windowClosing(WindowEvent e)
225 { text.append("\n窗口正在关闭呢"); dispose();
226 }
227 public void windowClosed(WindowEvent e)
228 { System.out.println("程序结束运行");
229 System.exit(0);
230 }
231 public void windowIconified(WindowEvent e)
232 { text.append("\n我图标化了");
233 }
234 public void windowDeiconified(WindowEvent e)
235 { text.append("\n我撤消图标化");
236 setBounds(0,0,400,400);validate();
237 }
238 public void windowOpened(WindowEvent e){ }
239}
240class Example15_5
241{ ublic static void main(String args[])
242 { new MyFrame("窗口");
243 }
244}
245
246//例子6
247import java.awt.*;import java.awt.event.*;
248class MyFrame extends Frame
249{ TextArea text; Boy police;
250 MyFrame(String s)
251 { super(s);
252 police=new Boy(this);
253 setBounds(100,100,200,300); setVisible(true);
254 text=new TextArea(); add(text,BorderLayout.CENTER);
255 addWindowListener(police); validate();
256 }
257}
258class Boy extends WindowAdapter
259{ MyFrame f;
260 public Boy(MyFrame f)
261 { this.f=f;
262 }
263 public void windowActivated(WindowEvent e)
264 { f.text.append("\n我被激活");
265 }
266 public void windowClosing(WindowEvent e)
267 { System.exit(0);
268 }
269}
270class Example15_6
271{ public static void main(String args[])
272 { new MyFrame("窗口");
273 }
274}
275
276//例子7
277import java.awt.*;import java.awt.event.*;
278class MyFrame extends Frame
279{ TextArea text;
280 MyFrame(String s)
281 { super(s);
282 setBounds(100,100,200,300);setVisible(true);
283 text=new TextArea(); add(text,BorderLayout.CENTER);
284 addWindowListener(new WindowAdapter()
285 { public void windowActivated(WindowEvent e)
286 { text.append("\n我被激活");
287 }
288 public void windowClosing(WindowEvent e)
289 { System.exit(0);
290 }
291 }
292 );
293 validate();
294 }
295}
296class Example15_7
297{ public static void main(String args[])
298 { new MyFrame("窗口");
299 }
300}
301
302//例子8
303import java.applet.*;import java.awt.*;import java.awt.event.*;
304public class Example15_8 extends Applet
305{ Frame f,g;
306 public void init()
307 { f=new Frame("音乐之窗");g=new Frame("体育之窗");
308 f.setSize(150,150); f.setVisible(true);
309 g.setSize(200,200); g.setVisible(false);
310 f.addWindowListener(new WindowAdapter()
311 { public void windowClosing(WindowEvent e)
312 { f.setVisible(false);
313 g.setVisible(true);
314 }
315 } ); //适配器
316 g.addWindowListener(new WindowAdapter()
317 {public void windowClosing(WindowEvent e)
318 { g.setVisible(false);
319 f.setVisible(true);
320 }
321 } );
322 }
323}
324
325//例子9
326import java.awt.*;import java.awt.event.*;
327public class Example15_9
328{ public static void main(String args[])
329 { MyFrame f=new MyFrame();
330 f.setBounds(70,70,70,89);f.setVisible(true);f.pack();
331 }
332}
333class MyFrame extends Frame implements ActionListener
334{ PrintJob p=null; //声明一个PrintJob对象。
335 Graphics g=null;
336 TextArea text=new TextArea(10,10);
337 Button 打印文本框=new Button("打印文本框"),
338 打印窗口=new Button("打印窗口"),
339 打印按扭=new Button("打印按扭");
340 MyFrame()
341 { super("在应用程序中打印");
342 打印文本框.addActionListener(this);
343 打印窗口.addActionListener(this);
344 打印按扭.addActionListener(this);
345 add(text,"Center");
346 Panel panel=new Panel();
347 panel.add(打印文本框); panel.add(打印窗口); panel.add(打印按扭);
348 add(panel,"South");
349 addWindowListener(new WindowAdapter()
350 {public void windowClosing(WindowEvent e)
351 {System.exit(0); }
352 });
353 }
354public void actionPerformed(ActionEvent e)
355 { if(e.getSource()==打印文本框)
356 { p=getToolkit().getPrintJob(this,"ok",null);
357//创建一个PrintJob对象p 。
358 g=p.getGraphics(); //p获取一个用于打印的 Graphics对象。
359 g.translate(120,200);
360 text.printAll(g);
361 g.dispose(); //释放对象 g。
362 p.end();
363 }
364 else if(e.getSource()==打印窗口)
365 { p=getToolkit().getPrintJob(this,"ok",null);
366 g=p.getGraphics(); //p获取一个用于打印的 Graphics对象。
367 g.translate(120,200);
368 this.printAll(g); //打印当前窗口及其子组件。
369 g.dispose(); //释放对象 g。
370 p.end();
371 }
372 else if(e.getSource()==打印按扭)
373 { p=getToolkit().getPrintJob(this,"ok",null);
374 g=p.getGraphics();
375 g.translate(120,200); //在打印页的坐标(120,200)处打印第一个"按扭"。
376 打印文本框.printAll(g);
377 g.translate(78,0); //在打印页的坐标(198,200)处打印第二个"按扭"。
378 打印窗口.printAll(g);
379 g.translate(66,0); //在打印页的坐标(264,200)处打印第三个"按扭"。
380 打印按扭.printAll(g);
381 g.dispose();
382 p.end();
383 }
384 }
385}
386
387//例子10
388import java.awt.*;import java.awt.event.*;
389import java.awt.datatransfer.*;
390public class Example15_10 extends Frame implements ActionListener
391{ MenuBar menubar; Menu menu;
392 MenuItem copy,cut,paste;
393 TextArea text1,text2;
394 Clipboard clipboard=null;
395 Example15_10()
396 { clipboard=getToolkit().getSystemClipboard();//获取系统剪贴板。
397 menubar=new MenuBar();
398 menu=new Menu("Edit"); copy=new MenuItem("copy");
399 cut=new MenuItem ("cut"); paste=new MenuItem ("paste");
400 text1=new TextArea(20,20); text2=new TextArea(20,20);
401 copy.addActionListener(this); cut.addActionListener(this);
402 paste.addActionListener(this);
403 setLayout(new FlowLayout());
404 menubar.add(menu);
405 menu.add(copy); menu.add(cut); menu.add(paste);
406 setMenuBar(menubar);
407 add(text1);add(text2);
408 setBounds(100,100,200,250); setVisible(true);pack();
409 addWindowListener(new WindowAdapter()
410 {public void windowClosing(WindowEvent e)
411 {System.exit(0);
412 }
413 }) ;
414 }
415 public void actionPerformed(ActionEvent e)
416 { if(e.getSource()==copy) //拷贝到剪贴板。
417 { String temp=text1.getSelectedText(); //拖动鼠标选取文本。
418 StringSelection text=new StringSelection(temp);
419 clipboard.setContents(text,null);
420 }
421 else if(e.getSource()==cut) //剪贴到剪贴板。
422 { String temp=text1.getSelectedText(); //拖动鼠标选取文本。
423 StringSelection text=new StringSelection(temp);
424 clipboard.setContents(text,null);
425 int start=text1.getSelectionStart();
426 int end =text1.getSelectionEnd();
427 text1.replaceRange("",start,end) ; //从Text1中删除被选取的文本。
428 }
429 else if(e.getSource()==paste) //从剪贴板粘贴数据。
430 { Transferable contents=clipboard.getContents(this);
431 DataFlavor flavor= DataFlavor.stringFlavor;
432 if( contents.isDataFlavorSupported(flavor))
433 try{ String str;
434 str=(String)contents.getTransferData(flavor);
435 text2.append(str);
436 }
437 catch(Exception ee){}
438 }
439 }
440 public static void main(String args[])
441 { Example15_10 win=new Example15_10 ();
442 }
443}
444