Re: [問題] 補充:JList監聽事件與MVC架構實作

看板java作者 (Eddie)時間10年前 (2015/03/06 20:09), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
問題乏人問津 不過我改寫了一下我的寫法,有改善了一些問題。 可以讓View裡面的JList監聽事件,透過Controller來增加。 在View裡面: //User DoubleClicked posbox List void addposboxListener(MouseListener listenForposbox){ posbox.addMouseListener(listenForposbox); } 在Contorller裡面: //建構子 public TranslateController(TranslateView theView ,Model theModel){ this.theModel = theModel; this.theView = theView; init(); } private void init() { theView.addposboxListener(new ChangeList()); } class ChangeList extends MouseAdapter{ public void mouseClicked(MouseEvent e){ try{ if(e.getClickCount() == 2){ int index = theView.getposindex(); ArrayList new_Dict = new ArrayList(); for(int i = 0; i < Dicts.get(index).size(); i++){ new_Dict.add(Dicts.get(index).get(i)); } theView.changedictbox(new_Dict); } }catch(Exception a){ theView.displayError("沒有選項"); a.printStackTrace(); } } } 但我本來是將ChangeList Class 監聽事件寫在另一個檔案, 然後將原來的private void init改成 private void init() { theView.addposboxListener(new ChangeLis(theView, Dicts)); } 不過這樣會出現錯誤,一開始所有欄位都是空的,輸入後list2會有選項 但clicked之後,都會跳出沒有選項的提示訊息, 不過list3的資料都有對應到。 我在想是因為一開始欄位都是空的,然後clicked事件,也去偵測初始的那個list 導致會一直出現提示訊息...不知道是不是這樣 我的問題是,將ChangeList Class寫在另一個檔案會有問題 但是,寫在與Contorller同一個Class,就完全無誤?? 是為什麼呢?? 是哪邊觀念錯誤了... 希望有大大可以為我解惑,謝謝大家。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.104.51 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1425643764.A.AB7.html

03/07 00:04, , 1F
1.先去學JAVA變數命名慣例 2.把整個程式上傳比較好找錯誤
03/07 00:04, 1F
文章代碼(AID): #1K-PZqgt (java)
文章代碼(AID): #1K-PZqgt (java)