Java 摆动双击

Java 摆动双击,java,swing,mouseevent,listselectionlistener,Java,Swing,Mouseevent,Listselectionlistener,当试图通过双击从列表中选择项目时,它会为两个列表选择一次,但在通过单击选择之后 listScrollPanel.setViewportView(categoryList); subCategoryList.setModel(new javax.swing.AbstractListModel() { String[] strings = {"Sub-category 1", "Sub-category 2", "Sub-category 3", "Sub-categ

当试图通过双击从列表中选择项目时,它会为两个列表选择一次,但在通过单击选择之后

    listScrollPanel.setViewportView(categoryList);
    subCategoryList.setModel(new javax.swing.AbstractListModel() {
        String[] strings = {"Sub-category 1", "Sub-category 2", "Sub-category 3", "Sub-category 4", "Sub-category 5", "Sub-category 6"};
    });
subCategoryList.addMouseListener(new java.awt.event.MouseAdapter() {
    @Override
    public void mouseClicked(java.awt.event.MouseEvent evt) {
        infoBox(Integer.toString(evt.getClickCount()), subCategory);
        if (evt.getClickCount() == 2) {
            subCategoryList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
                @Override
                public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                    subCategoryListValueChanged(evt);
                }
            });
        }
    }
});
private void subCategoryListValueChanged(javax.swing.event.ListSelectionEvent evt) {

    subCategory = (String) subCategoryList.getSelectedValue();
    labelSC.setText(CAT_HEADER);
    listScrollPanel.setViewportView(categoryList);
}
private static void infoBox(String Message, String location) {
    JOptionPane.showMessageDialog(null, Message, location, JOptionPane.INFORMATION_MESSAGE);
}
如何让他只听双击?
我有一个categoryList,在双击和ListSelection后,它将viewportView更改为子类别,其工作原理相同!但他们在前两次双击后会在单击时做出反应

每次发生双击鼠标事件时,您都会添加一个新的
ListSelectionListener
。每一个都会对鼠标单击做出响应。您可以单独使用
鼠标侦听器

subCategoryList.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent evt) {
        if (evt.getClickCount() == 2) {
           String selectedValue = subCategoryList.getSelectedValue();
           // do stuff with selectedValue...
        }
    }
});

每次双击鼠标事件发生时,您都会添加一个新的
ListSelectionListener
。每一个都会对鼠标单击做出响应。您可以单独使用
鼠标侦听器

subCategoryList.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent evt) {
        if (evt.getClickCount() == 2) {
           String selectedValue = subCategoryList.getSelectedValue();
           // do stuff with selectedValue...
        }
    }
});

!!! 请为什么大喊大叫,为了更好的帮助,尽快发布一个,简短的,可运行的,可编译的,关于容器的列表,重复的是的,我看到了这个问题!并添加到我的代码中!但它不起作用!所以我问!这里有人告诉我,我必须删除
addListSelectionListener
!!!如果你能看到,在我的代码是双击这是在问题你扔!但它不起作用!我真的很感激这里所有的作者,倾听和尊重,但你的。。。。这就像是
有点像是
!!!!请为什么大喊大叫,为了更好的帮助,尽快发布一个,简短的,可运行的,可编译的,关于容器的列表,重复的是的,我看到了这个问题!并添加到我的代码中!但它不起作用!所以我问!这里有人告诉我,我必须删除
addListSelectionListener
!!!如果你能看到,在我的代码是双击这是在问题你扔!但它不起作用!我真的很感激这里所有的作者,倾听和尊重,但你的。。。。这就像是
有点像是
!确切地说:“每次鼠标双击都会发生”,如果我可以在这里问的话!SubCategory List.getModel().getElementAt(SubCategory List.locationToIndex(evt.getPoint())之间的区别是什么;和子类别列表。getSelectedValue()???两者都是等效的,
getSelectedValue
较短,因此我更新了它,准确地说:“每次双击鼠标”,如果我可以在这里询问的话!SubCategory List.getModel().getElementAt(SubCategory List.locationToIndex(evt.getPoint())之间的区别是什么;和子类别列表。getSelectedValue()???两者都是等效的,
getSelectedValue
较短,因此已使用此更新