0

私はこのリスナーをコーディングしました:

        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; 、しかし、なぜそれがfalseに設定されていないのですか?

4

1 に答える 1

4

最初のダブルクリックマウスイベントで設定this.ignoreDoubleClicks = trueしましたが、にリセットするコードは表示されませんfalseifすべてのコードは、かどうかをチェックするステートメントにラップされているように見える!this.ignoreDoubleClicksため、trueに設定すると、リスナーが永続的にロックされます。条件()の左側はe.getClickCount() == 2trueと評価される場合とされない場合があり、右側が論理的でfalseあり、演算子が論理的であり、 (&&).

于 2013-01-26T14:09:28.627 に答える