如何设置表只能单击一次的mouseListener?

时间:2013-01-26 13:57:22

标签: java swing jtable mouseevent double-click

我编写了这个监听器:

        playlistTable.addMouseListener(new MouseAdapter() {

        private boolean ignoreDoubleClicks = false;

        public void mouseClicked(MouseEvent e) {
            if (e.getClickCount() == 2 && !ignoreDoubleClicks) {
                this.ignoreDoubleClicks  = true;
                System.out.println(ignoreDoubleClicks);
                JTable target = (JTable)e.getSource();
                int row = target.getSelectedRow();

                videoTableModel = new VideoTableModel(playlistService.getMoviesOfPlaylist(row));
                target.setModel(videoTableModel);
                //TODO enables the table
                //movieTable.setEnabled(false);

                createPlaylist.setEnabled(false);
                setButtonIcon("icons\\playlist_grau.png", createPlaylist, "createPlaylist");

                removePlaylist.setEnabled(false);
                setButtonIcon("icons\\bin_grau.png", removePlaylist, "removePlaylist");

                algoButton.setEnabled(false);
                setButtonIcon("icons\\glyphicons_137_cogwheels_grau.png", algoButton, "algoButton");

                //                  playlistTable.setEnabled(false);

                revalidate();
            }
        }
    });

但是,当我第一次双击播放列表时,我会看电影。当我使用另一个按钮返回并在播放列表上双击“再次”时,它不再可以点击。为什么呢?

更新

问题是this.ignoreDoubleClicks = true; 但是,为什么它没有设置为假?

1 个答案:

答案 0 :(得分:4)

在第一次双击鼠标事件时,您设置了this.ignoreDoubleClicks = true,但我没有看到任何将其重置为false的代码。由于所有代码都包含在检查if的{​​{1}}语句中,因此将其设置为true会永久锁定侦听器。条件的左侧(!this.ignoreDoubleClicks)可能会或可能不会评估为真,无论如何都是无关紧要的,因为右侧是e.getClickCount() == 2且运算符是逻辑 { {1}}