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

作者: kotou (Eddie)   2015-03-06 20:09:21
問題乏人問津
不過我改寫了一下我的寫法,有改善了一些問題。
可以讓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,就完全無誤??
是為什麼呢?? 是哪邊觀念錯誤了...
希望有大大可以為我解惑,謝謝大家。
作者: pzyc79   2015-03-07 00:04:00
1.先去學JAVA變數命名慣例 2.把整個程式上傳比較好找錯誤

Links booklink

Contact Us: admin [ a t ] ucptt.com