作者carlcarl (carl)
看板java
標題Re: [問題] class之間怎麼互相溝通??
時間Mon Jun 16 12:18:00 2008
※ 引述《carlcarl (carl)》之銘言:
: 後來照著推文建議 嘗試用Observable和observer
: 可是後來弄完之後卻發現 我輸入網址 按按鈕 網頁卻不會有任何改變!?
: 我的架構是一個menuBar 一個toolBar 一個網頁的browser(CarlBrowser)
: 然後再用一個JFrame的大Browser(CarlcarlBrowser)把三個包起來
: 最後再用一個Main class 中用main函式 宣告一個上面的大browser
: 我的流程是從一個toolBar(Observable)中 按了按鈕之後
: 在按鈕的事件中 宣告一個有extends Observable的物件A
: 將一個物件藉著A的notifyObservers傳到browser(observer)
: 在browser 的 update()將傳的物件轉型 判斷其中的字串是什麼
: 來決定 1.前往網頁 2.上一頁 3.下一頁
: 接著執行相對應的函式
: 我在函式中有試著看傳的字串 內容也是我想要的 JEditorPane的setPage應該也有執行
: 但是網頁就是不會變更...
: 可是我在Carlbrowser或CarlcarlBrowser的建構式裡做 卻又可以顯示.........
: 超連結的部份也是ok..
: 不知道哪邊有錯??
: 可以幫我看一下嗎@@
: menuBar沒影響到 所以應該沒關係
: http://rafb.net/p/ZyHZQv99.html toolBar
: http://rafb.net/p/pH6lYQ93.html browser的網頁
: http://rafb.net/p/UaLjXx99.html 用了observable的class
: http://rafb.net/p/flTLYz50.html notify所傳遞的物件
: http://rafb.net/p/mhj1mr50.html 大browser
: http://rafb.net/p/iKPzbO25.html Main class
: 主要應該是observer 和 observable的問題吧..
自問自答一下 剛剛測試出來 可以跑了= =+
我的toolBar 本來是extends JPanel
因為不能再繼承 Observable
所以才會另外寫一個class extends Observable
但是這樣就變得很奇怪了
網頁瀏覽器(CarlBrowser)本來是要監看toolBar 怎麼後來會變成去看其他的東西呢??
我想說不定這是我的網頁為什麼不會跑的原因
後來就把toolBar的extends JPanel改掉
改成內含一個JPanel 再extends Observable
然後再另外做一個函式 回傳這個JPanel
CarlBrowser的建構式改成 public CarlBrowser(Observable o)
最後面 o再加入這個觀察者
在CarlcarlBrowser(大瀏覽器) 裡面
toolBar = new CarlToolBar();
browser = new CarlBrowser(toolBar);
幫toolBar多加一個觀察者這樣
這樣就可以跑了@@
在爬前面文的時候 也看到有一個是extends JPanel的
然後他說因為不能多重繼承 所以不知道怎麼加Observable...
上面這個是我唯一想到的方案 不知道還有沒有什麼好方法@@
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.171.138.217
推 wannawanna:不用class 用interface? 06/16 15:02
→ carlcarl:恩 其實我對用interface還沒啥概念~"~ 06/16 15:11
→ carlcarl:恩......剛剛再看了一下精華區 似乎跟我原本的作法比較 06/16 15:30
→ carlcarl:類似....我再用原來的方法改改看好了~"~ 06/16 15:31
推 slalala:比較好的作法是介面 底成所有需要被監視的物件都要實作 06/16 15:38
推 slalala:話說我也只是嘴跑只看過寫法 沒有自己做過= = 06/16 15:47
→ TonyQ:手邊能用的工具(所學、環境所給)限制結果, 06/16 15:52