0

を に追加しMouseListenerJList、右クリックしたときに から選択を解除しJListます。ただし、JList間隔選択を処理できるようにします。コントロールボタンを使用して選択し、リストからいくつかのアイテムをランダムに選択すると、MouseEventが発生します! しかし、Shift キーを使用して連続選択を行うと、問題なく動作します。

これが私のコードです:

List.addMouseListener(new MouseAdapter() {

            public void mouseClicked(MouseEvent e)
            {
                JList list = (JList) e.getSource();
                if ( SwingUtilities.isRightMouseButton(e) ) {
                    System.out.println("Boom");
                    list.clearSelection();
                }
            }
});
4

1 に答える 1

1

SSCCEE は、Short、Self Contained、Correct (Compilable)、Example を意味します。問題を示す短い例を 1 つ作成する必要があります。実際のコードは長く、問題を示すのに不必要な場合があるため、小さな実行プログラムを作成する必要があります。

わかりました、これが SSCCE です。予想どおり、正常に動作しています。この例を使用するときに直面している問題をここでお知らせください。

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;

public class ListDemo extends JFrame{
    private DefaultListModel<String> listModel;
    private JList<String> list;
    private JScrollPane listScrollPane;

    public ListDemo(){
        listModel = new DefaultListModel<String>();
        for(int i = 0; i < 10; i++){
            listModel.addElement("Item " + (i + 1));
        }

        list = new JList<String>(listModel);
        list.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent me){
                if(SwingUtilities.isRightMouseButton(me)){
                    list.clearSelection();
                }
            }
        });

        listScrollPane = new JScrollPane(list);

        getContentPane().add(listScrollPane);

        setSize(500, 400);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String [] arg){
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new ListDemo().setVisible(true);
            }
        });
    }
}
于 2013-10-28T10:20:55.587 に答える