재미있게 Java에서 지뢰 찾기 복제본을 작성하려고합니다. 나는 위험 수, 깃발 등을 나타 내기 위해 레이블이 바뀌는 JButton 그리드를 가지고있다.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"부분 만 표시됩니다. 하지만 더 중요한 것은 버튼을 누르는 데는 아무런 효과가 없다는 것입니다.
편집 : Mac의 경우 mouseClick이 아닌 mousePress에서 팝업 트리거가 발생합니다.
편집 :
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
무엇이'popupTrigger' 물건을 필요로합니까? 이벤트 mousePressed를 확인하고 BUTTON1_MASK 또는 BUTTON2_MASK에 대한 이벤트 수정자를 확인하십시오. –