Kliknij prawym przyciskiem myszy na JButton

Staram się napisać klon Minesweeper w Javie dla zabawy. Mam siatkę JButtonów, których etykiety zmienię, aby przedstawić liczbę niebezpieczeństw, flagi itp.

Mój problem polega na tym, że nie wiem, jak kliknąć prawym przyciskiem myszy przycisk J, aby nacisnąć przycisk. Zrobiłem co następuje:

button.addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e){
        boolean mine = field.isMine(x, y);
        if (e.isPopupTrigger()) {
            button.setText("F");
        }
        else {
            if (mine) {
                button.setText("X");
            }
        }
    }
});

To wcale nie wydaje się działać; „F” nigdy nie jest pokazywane, tylko część „X”. Ale co ważniejsze, to nie robi nic, by wcisnąć przycisk.

EDYCJA: Mac mają wywoływane wyskakujące okienko na myszy, a nie mouseClick.

EDIT: Oto rozwiązanie, które opracowałem na podstawie zaakceptowanej odpowiedzi:

button.addMouseListener(new MouseAdapter(){
            boolean pressed;

            @Override
            public void mousePressed(MouseEvent e) {
                button.getModel().setArmed(true);
                button.getModel().setPressed(true);
                pressed = true;
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                //if(isRightButtonPressed) {underlyingButton.getModel().setPressed(true));
                button.getModel().setArmed(false);
                button.getModel().setPressed(false);

                if (pressed) {
                    if (SwingUtilities.isRightMouseButton(e)) {
                        button.setText("F");
                    }
                    else {
                        button.setText("X");
                    }
                }
                pressed = false;

            }

            @Override
            public void mouseExited(MouseEvent e) {
                pressed = false;
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                pressed = true;
            }                    
        });
        add(button);

Minesweeper clone http://grab.by/1y9z

questionAnswers(8)

yourAnswerToTheQuestion