我有一个面板,其中包含一组(多选)ListBoxes,每个面板都位于自己的面板中,我需要弄清楚ListBox中所选的值是什么。通过API,我能看到的唯一方法是(伪代码):
for (Wigdet w : outerPanel)
Panel innerPanel = (Panel) w;
for (Widget s : innerPanel) // only has the ListBox in it
ListBox box = (ListBox) s;
// do stuff with the ListBox to populate the list of selected options
问题在于 - eclipse没有抱怨并且它编译得很好,但是在运行时会产生一个ClassCastException(在第一次施法时 - 我认为它在第二次也会有同样的问题,但是因为我可以我不能肯定地说到这一点
这样做的正确方法是什么?
答案 0 :(得分:0)
搞定了。显然GWT会将自己的小部件插入到面板中,除了你自己添加的小部件之外(因此创建一个Panel然后添加一个ListBox将导致迭代中不仅仅是一个小部件)。
因此,要解决此问题,请在转换之前抛出一个instanceof检查
答案 1 :(得分:0)
为什么不能将它们声明为实例变量?