依處理器所掛的位置,總共有5種寫法,以計時器處理器為例, A.處理器掛在外部類別下:import javax.swing.Timer; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class TimerTest1 { public static void main(String args[]) throws Exception { ActionListener al = new TimerHandler(); Timer t = new Timer(1000,al); t.start(); Thread.sleep(10000); t.stop(); } } class TimerHandler implements ActionListener { public void actionPerformed(ActionEvent ae) { System.out.println("執行每次叫醒要作的事1"); } }
B.處理器掛在內部匿名類別下:import javax.swing.Timer; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class TimerTest2 { public static void main(String args[]) throws Exception { ActionListener al = new ActionListener() { public void actionPerformed(ActionEvent ae) { System.out.println("執行每次叫醒要作的事2"); } }; Timer t = new Timer(1000,al); t.start(); Thread.sleep(10000); t.stop(); } }
C.處理器掛在內部有名類別下:import javax.swing.Timer; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class TimerTest3 { public static void main(String args[]) throws Exception { new TimerTest3(); } TimerTest3() throws Exception { ActionListener al = new TimerHandler(); Timer t = new Timer(1000,al); t.start(); Thread.sleep(10000); t.stop(); } private class TimerHandler implements ActionListener { public void actionPerformed(ActionEvent ae) { System.out.println("執行每次叫醒要作的事3"); } } }
D.處理器掛在本身類別下:import javax.swing.Timer; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class TimerTest4 implements ActionListener { public void actionPerformed(ActionEvent ae) { System.out.println("執行每次叫醒要作的事4"); } public static void main(String args[]) throws Exception { ActionListener al = new TimerTest4(); Timer t = new Timer(1000,al); t.start(); Thread.sleep(10000); t.stop(); } }
E.處理器同時掛在內部和外部類別下:import javax.swing.Timer; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class TimerTest5 { public static void main(String args[]) throws Exception { ActionListener al = new ActionAdapter() { public void actionPerformed(ActionEvent ae) { System.out.println("執行每次叫醒要作的事5x"); } }; Timer t = new Timer(1000,al); t.start(); Thread.sleep(10000); t.stop(); } } class ActionAdapter implements ActionListener { public void actionPerformed(ActionEvent ae) { System.out.println("執行每次叫醒要作的事5"); } }
2008年5月28日 星期三
5 kinds of event handler styles
2008年5月22日 星期四
cisco nat usage
inside local ip, 內部私有ip
inside global ip, 內部私有ip之對外公開代表ip
outside global ip, 外部公開ip
outside local ip, 外部公開ip之對內私有代表ip
--
ilip olip (內) NAT路由器 (外) igip ogip
--
nat分一對一,一對多,多對一,多對多轉址
一對一,靜態,單址對應到單址
一對多,動態,單址對應到池群,輪流負載平衡
多對一,動態,清單群對應到單址,埠超載
多對多,動態,清單群對應到池群,埠超載
--
清單群(list number/name)
基本清單(限定來源),擴張清單(限定來源去處,埠號)
池群(pool name)
IP範圍起終點,遮罩
負載平衡(type rotary)
埠超載(port overload)
--
nat分動態(dynamic)及靜態(static)轉址
動態只具單向連線性,內可主動連外,外則不可主動連內
靜態則具雙向連線性,內可主動連外,外也可主動連內
--
ip nat inside source 內清單群 外池群/單址
用於內向外的來源住址轉換,ilip 內->外 igip
將內部發出之私有來源住址轉成外部公開來源住址
可保護內部電腦不為外界入侵
ip nat inside destination 外清單群 內池群/單址
用於外向內的目的住址轉換,ilip 內<-外 igip
將外部發出之公開目的住址轉成內部私有目的住址
可作內部伺服器對外之負載平衡
ip nat outside source 外清單群 內池群/單址
用於外向內的來源住址轉換,olip 內<-外 ogip
將外部發出之公開來源住址轉成內部私有來源住址
可作對稱式連外路由,或重疊網路間之橋樑,內部有外部公開住址
ip nat outside destination 內清單群 外池群/單址
用於內向外的目的住址轉換,olip 內->外 ogip
將內部發出之私有目的住址轉成外部公開目的住址
可限制內部對外連線對象
2008年5月21日 星期三
strut, glue, rigid area in BoxLayout
盒子排版器(BoxLayout)有3種無互動,純佔面積用之視窗元件可用,
摘要如下,
1.strut (支架)
Component v = Box.createVerticalStrut(h); //新增隱形固定高度h像素之垂直支架
Component h = Box.createHorizontalStrut(w); //新增隱形固定寬度w像素之水平支架
2.glue (黏膠)
Component v = Box.createVerticalGlue(); //新增隱形垂直等間隔黏膠
Component h = Box.createHorizontalGlue(); //新增隱形水平等間隔黏膠
Component g = Box.createGlue(); //新增隱形等間隔黏膠,適用於垂直或水平盒子排版器
3.rigid area (硬塊), 相當於2維支架
Dimension d = new Dimension(h,w); // 新增寬h,高w尺寸
Component ra = Box.createRigidArea(d); // 依給定尺寸新增隱形硬塊
PS:
deitel-php-05-java how to program 6th ed
訂閱:
文章 (Atom)