Java mouseListener让我的名单表现得很奇怪
我有一个加载了Object的JList,它有ListCellRenderer和MouseStener,下面是代码: MyListCellRenderer:Java mouseListener让我的名单表现得很奇怪,java,jlist,mouselistener,Java,Jlist,Mouselistener,我有一个加载了Object的JList,它有ListCellRenderer和MouseStener,下面是代码: MyListCellRenderer: public class MyListCellRenderer extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList<?> list, Object value
public class MyListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Component cell = null;
if (value instanceof Domain) {
Domain domain = (Domain)value;
int status = domain.getStatus();
String naziv = domain.getNaziv();
cell = super.getListCellRendererComponent(list,naziv,index, isSelected, cellHasFocus);
if (status == 4 & !isSelected) {
cell.setBackground( Color.red );
cell.setForeground(Color.WHITE);
}
}
return cell;
}
}
这就是设置。我所做的是从数据库中获取数据并将其加载到JList。下一步是当我单击列表中的一行时,我希望另一个Jlist从数据库加载相应的字段
一切正常。我在终端上获得了正确的值,但是当我尝试将这些值加载到另一个JList时,触发作业的第一个JList的行为是奇怪的。附加了mouseListener的列表中有9个域元素,仅显示Domain.getName。当我进行选择时,单击一次,我会在加载的第二个Jlist中获得正确的数据,但选择标记会自动在第一个Jlist中移动。它向下移动了一个点,发生了9次,我不知道为什么会这样
这是侦听器代码:
MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
d = listRN.getSelectedValue(); //getting the object from the first list
System.out.println(d.getNaziv());
}
//RN-->>PL
ArrayList<Domain> x = new DBsearch(d).Conn();
modelPL.clear();
for(int i=0;i<x.size();i++){
modelPL.addElement(x.get(i)); //adding to second List
System.out.println(x.get(i).getNaziv());
}
}
};
listRN.addMouseListener(mouseListener);
有人知道这里发生了什么吗?谢谢有人能帮我解决这个问题吗???我怀疑它与listRN.setSelectionModelm;有关;。你能展示一下创建m的代码吗?@VGR谢谢你。这就是问题所在。我的listRN和listPL都使用相同的SelectionModelm!!
public class Domain {
private Integer id;
private String naziv;
private Integer status;
public Domain(){}
public Integer getId() {return id;}
public void setId(int i){id = i;}
public String getNaziv(){return naziv;}
public void setNaziv(String n){naziv = n;}
public Integer getStatus(){return status;}
public void setStatus(int s){status = s;}
public String toString(){return naziv; }
}
MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
d = listRN.getSelectedValue(); //getting the object from the first list
System.out.println(d.getNaziv());
}
//RN-->>PL
ArrayList<Domain> x = new DBsearch(d).Conn();
modelPL.clear();
for(int i=0;i<x.size();i++){
modelPL.addElement(x.get(i)); //adding to second List
System.out.println(x.get(i).getNaziv());
}
}
};
listRN.addMouseListener(mouseListener);