javabean事件監聽例子
我使用JAVA開發項目 也剛剛只有半年多的時間吧 根本提不上什么經驗 總是從網上找別人的代碼和例子看 但自己卻從未上傳過什么東西給別人看 而且最近發現找到的精華都是別人的BLOG里寫的內容 一時感覺不錯 我也把自己的學習記錄搞上去吧
首先這個例子 我做了4個類 分別是
1 TestListener類 這個類是我們自己寫的監聽服務
1 import java.beans.PropertyChangeListener;
2 import java.beans.PropertyChangeSupport;
3
4
5 public class TestListener{
6
7 PropertyChangeSupport listeners = new PropertyChangeSupport(this);
8
9 //添加監聽器
10 public void addPropertyChangeListener(PropertyChangeListener l) {
11 listeners.addPropertyChangeListener(l);
12 }
13
14 //觸發屬性改變的事件
15 protected void firePropertyChange(String prop, Object old, Object newValue) {
16 listeners.firePropertyChange(prop, old, newValue);
17 }
18
19 //觸發結構改變的事件
20 protected void fireStructureChange(String prop, Object child) {
21 listeners.firePropertyChange(prop, null, child);
22 }
23
24 //刪除監聽器
25 public void removePropertyChangeListener(PropertyChangeListener l) {
26 listeners.removePropertyChangeListener(l);
27 }
28 }
29
30
2 import java.beans.PropertyChangeSupport;
3
4
5 public class TestListener{
6
7 PropertyChangeSupport listeners = new PropertyChangeSupport(this);
8
9 //添加監聽器
10 public void addPropertyChangeListener(PropertyChangeListener l) {
11 listeners.addPropertyChangeListener(l);
12 }
13
14 //觸發屬性改變的事件
15 protected void firePropertyChange(String prop, Object old, Object newValue) {
16 listeners.firePropertyChange(prop, old, newValue);
17 }
18
19 //觸發結構改變的事件
20 protected void fireStructureChange(String prop, Object child) {
21 listeners.firePropertyChange(prop, null, child);
22 }
23
24 //刪除監聽器
25 public void removePropertyChangeListener(PropertyChangeListener l) {
26 listeners.removePropertyChangeListener(l);
27 }
28 }
29
30
2 TestPropertyChangeListener類 這個是一個監聽器類 是用來監聽TestListener類的
1
import java.beans.PropertyChangeEvent;
2
import java.beans.PropertyChangeListener;
3
4
public class TestPropertyChangeListener implements PropertyChangeListener
{
5
6
public void propertyChange(PropertyChangeEvent evt)
{
7
System.out.println(evt.getNewValue());
8
System.out.println(evt.getOldValue());
9
System.out.println(evt.getPropagationId());
10
System.err.println(evt.getPropertyName()); //這個就是接受過來的標識
11
Object j = evt.getSource(); //經過轉型可以得到 完整的Bean對象
12
System.out.println("JY:PropertyChangeListener");
13
14
15
}
16
17
}
18
19

2

3

4



5

6



7

8

9

10

11

12

13

14

15

16

17

18

19

3 Bean類 這個類很簡單的 就是很簡單的JAVABEAN
1
public class Bean extends TestListener
{
2
3
private String name;
4
private String pwd;
5
public String getName()
{
6
return name;
7
}
8
public void setName(String name)
{
9
String old = this.name;
10
this.name = name;
11
firePropertyChange("name",old,name);
12
//第一個參數 是標識號 我們可以通過這個來判別是哪里觸發 了事件
13
14
}
15
public String getPwd()
{
16
return pwd;
17
}
18
public void setPwd(String pwd)
{
19
String old = this.pwd;
20
this.pwd = pwd;
21
firePropertyChange("pwd",old,pwd);
22
}
23
24
}
25
26



2

3

4

5



6

7

8



9

10

11

12

13

14

15



16

17

18



19

20

21

22

23

24

25

26

4 Test類 執行類
1
public class Test
{
2
3
public static void main(String[] args)
{
4
Bean n = new Bean();
5
//把我們做好的 監聽器 增加給javabean對象
6
n.addPropertyChangeListener(new TestPropertyChangeListener());
7
//當SETNAME的時候 就會觸發 監聽器 中的方法
8
n.setName("a");
9
n.setPwd("sdf");
10
}
11
}
12
13



2

3



4

5

6

7

8

9

10

11

12

13

我自己想了一下 其實JAVA所有的監聽機智 好象都是這樣子實現的 比如按鈕那些
我開始特別不理解 按鈕的那些事件是怎么回事 現在終于有點明白了
這是我寫的第一篇東東 雖然都是很淺的東西 但還是希望大家能夠喜歡 并且對大家有點幫助