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