使用在java桌面应用程序中加入了一个List控件,在list控件中用一个for循环list.add("...."),当鼠标点击每个Item时弹出一个子窗口(用Dialog实现),当我点击桌面应用程序中的一个按钮时重新给List赋值,重新产生了list中的Item的值,当鼠标再次点击一个Item时先弹出第一次的对应顺序Item是的子窗口,当子窗口消逝后才弹出那个正确的那个子窗口,当点击桌面应用程序中的另外一个按钮时重新又给List赋值,重新产生了list中的Item的值,当鼠标再次点击一个Item时先弹出第一次的对应顺序Item是的子窗口,当子窗口消逝后弹出第二次的对应顺序Item是的子窗口,当子窗口消逝后才弹出那个正确的那个子窗口。是什么问题呢,我想是不是选择item的鼠标监听没有释放掉,应该怎么做呢?请指点
list.addSelectionListener(new SelectionListener()
{
public void widgetSelected(SelectionEvent event){
WebserveBaseInfo webserviceliserinfosub = new WebserveBaseInfo();
ArrayList listTVlistinfoselect = null;
try {
listTVlistinfoselect = webserviceliserinfosub.getTvlist(webserviceinfo.getRequestinputvalue()[0]);
} catch (Exception e1) {
e1.printStackTrace();
}
String selectid[] = new String[listTVlistinfoselect.size()*2];//视频的ID
String TvVedioImagepath[] = new String[listTVlistinfoselect.size()*2];//视频图片路径
String Tvname[] = new String[listTVlistinfoselect.size()*2];//片名
String mainman[] = new String[listTVlistinfoselect.size()*2];//主演
String TvCount[] = new String[listTVlistinfoselect.size()*2];//主演
for(int TVcountsub = 0;TVcountsub < listTVlistinfoselect.size();TVcountsub++){
TVListInfo tvlistinfosub = (TVListInfo)listTVlistinfoselect.get(TVcountsub);
selectid[TVcountsub*2] = "";
Tvname[TVcountsub*2] = "";
mainman[TVcountsub*2] = "";
TvCount[TVcountsub*2] = "";
TvVedioImagepath[TVcountsub*2] = "";
///System.out.println ("tvlistinfosub.getPlyListID():"+tvlistinfosub.getPlyListID());
selectid[TVcountsub*2+1] = tvlistinfosub.getPlyListID();
Tvname[TVcountsub*2+1] = tvlistinfosub.getVName();
mainman[TVcountsub*2+1] = tvlistinfosub.getDirector();
TvCount[TVcountsub*2+1] = tvlistinfosub.getContent();
TvVedioImagepath[TVcountsub*2+1] = tvlistinfosub.getImgPath();
}
int listselections[] = list.getSelectionIndices ( );
String outText = "";
for (int loopIndex = 0; loopIndex < listselections.length; loopIndex++) {
outText += listselections[loopIndex];
System.out.println("AAAAA:"+outText);
//outText = listselections[loopIndex];
}
if(Tvname[Integer.parseInt(outText.trim())].trim().equals("")&& Tvname[Integer.parseInt(outText.trim())] == null || selectid[Integer.parseInt(outText.trim())].trim().equals("") ||selectid[Integer.parseInt(outText.trim())] == null ){
}else{
if(!selectid[Integer.parseInt(outText.trim())].trim().equals("")|| selectid[Integer.parseInt(outText.trim())]!= null ){
MovieInfoNew movidinfo = new MovieInfoNew(shell);
movidinfo.setMainman(mainman[Integer.parseInt(outText.trim())]);
movidinfo.setTvname(Tvname[Integer.parseInt(outText.trim())]);
movidinfo.setTvVediopath(TvVedioImagepath[Integer.parseInt(outText.trim())]);
movidinfo.setTvCount(TvCount[Integer.parseInt(outText.trim())]);
java.awt.Point mousePoint = MouseInfo.getPointerInfo().getLocation();
movidinfo.setShellx(event.x+mousePoint.x);
movidinfo.setShelly(event.y+mousePoint.y);
movidinfo.open();
}
}
//System.out.println ("You selected: " + outText);
//System.out.println ("You selected id value is: " + selectid[Integer.parseInt(outText.trim())]);
}
public void widgetDefaultSelected(SelectionEvent event)
{
/**
System.out.println ("BBBBBBBBBBBBBBBBBBBBBB");
int [] selections = list.getSelectionIndices ( );
String outText = "";
for (int loopIndex = 0; loopIndex < selections.length; loopIndex++) {
outText += selections[loopIndex] + " ";
}
System.out.println ("You selected: " + outText);
*/
}
});
请进入此贴者踊跃讨论这个问题。
public class Test1 extends JFrame{
JList list;
JButton btn;
public Test1(){
list = new JList(new String[]{"aa","bb","cc"});
btn = new JButton("update");
add(list,"Center");
add(btn,BorderLayout.SOUTH);
pack();
setSize(400,300);
setVisible(true);
btn.addActionListener(new ActionListener(){ @Override
public void actionPerformed(ActionEvent e) {
list.setListData(new String[]{"dd","ee","ff"});
}});
list.addListSelectionListener(new ListSelectionListener(){ @Override
public void valueChanged(ListSelectionEvent e) {
javax.swing.JOptionPane.showMessageDialog(null, list.getSelectedValue());
}});
}
public static void main(String[] args) {
new Test1();
}}