我正在嘗試在Java中編寫掃雷克隆以獲得樂趣。我有一個JButtons的網格,其標籤我將改變以表示危險計數,標誌等。右鍵點擊JButton
我的問題是,我不知道如何在JButton上按右鍵來按下按鈕。我做了以下幾點:
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");
}
}
}
});
這似乎並沒有工作; 「F」從不顯示,只顯示「X」部分。但更重要的是,這對壓低按鈕沒有任何作用。
編輯:Macs彈出式觸發器發生在mousePress上,而不是mouseClick。
編輯:這是我的工作了基於關閉接受的答案的解決方案:
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
是的,我知道最終的板子不應該有所有這些顯示的數字。我只是在發展。 – I82Much 2010-01-05 13:14:35
你需要這個'popupTrigger'的東西?只需檢查mousePressed事件並檢查BUTTON1_MASK或BUTTON2_MASK的事件修飾符。 – 2010-01-05 13:18:28