[자바] JButton을 마우스 오른쪽 버튼으로 클릭하십시오.
오른쪽 클릭으로 버튼을 누를 수 없습니다. 마우스 청취자에게 그런 줄을 추가하십시오.
mousePressed :
if(isRightButtonPressed) {underlyingButton.getModel().setPressed(true));
mouseReleased :
if(needReset) {underlyingButton.getModel().setPressed(false));
아니면 거기에서 원하는대로하십시오.
-------------------나는 사용하지 않고 isPopupTrigger
오른쪽 버튼을 직접 확인합니다.
button.addMouseListener (new MouseAdapter () { public void mouseClicked (MouseEvent e) { 부울 광산 = field.isMine (x, y); if (e.getButton () == MouseEvent.BUTTON2) { button.setText ( "F"); } ...-------------------
약간의 추가 : 오른쪽 버튼을 확인하는 가장 간단한 방법은 SwingUtilities.isRightMouseButton
"mousePressed"를 확인하면 문제가 해결되었다고 언급했듯이. 그리고 isPopupTrigger 의 Javadoc은 이에 대한 필요성을 설명합니다.
public boolean isPopupTrigger ()
...
참고 : 팝업 메뉴는 시스템마다 다르게 트리거됩니다. 따라서 적절한 크로스 플랫폼 기능을 위해 isPopupTrigger를 mousePressed 및 mouseReleased 모두에서 확인해야합니다.
Java Swing 튜토리얼 의 The Mouse Listener API 섹션도 참조하십시오 .
-------------------MouseEvent 에는 몇 가지 속성이 있습니다.
static int BUTTON1
static int BUTTON2
static int BUTTON3
다른 사람들 중에서. 이벤트가 시작될 때 확인하십시오.
편집하다
public int getButton ()
Returns which, if any, of the mouse buttons has changed state.
-------------------오른쪽 클릭시 눈에 띄게 눌리는 버튼은 버튼의 "정상적인"동작의 일부가 아닙니다. JToggleButton
s를 사용하여 가짜로 만들 수도 있고 , 마우스 오른쪽 버튼을 누르고있는 동안 버튼의 배경색과 테두리를 변경할 수도 있습니다.
이벤트가 제대로 트리거되고 (디버그 FTW!) button.setText ( "F")가 발생하고 있다고 확신하는 경우 간단히 다시 칠하면됩니다.
버튼을 다시 칠하십시오. http://java.sun.com/javase/6/docs/api/javax/swing/JComponent.html#repaint(java.awt.Rectangle)
-------------------이것은 Mac에서 잘 작동합니다.
import java.awt.event.*;
import javax.swing.*;
public class ButtonTest extends JFrame {
JButton button;
public ButtonTest() {
button = new JButton("W");
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getButton() == 3) { // if right click
button.setText("F");
button.getModel().setPressed(false);
// button.setEnabled(true);
} else {
button.setText("X");
button.getModel().setPressed(true);
// button.setEnabled(false);
}
}
});
this.add(button);
this.setVisible(true);
}
public static void main(String[] args) {
new ButtonTest();
}
}
e.getButton () == 2를 확인할 수도 있지만 이것이 Mac에서 언제 트리거되는지 모르겠습니다.
출처
https://stackoverflow.com/questions/2006188