Java mouseListener让我的名单表现得很奇怪

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

我有一个加载了Object的JList,它有ListCellRenderer和MouseStener,下面是代码:

MyListCellRenderer:

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);