카테고리 없음

[자바] JButton을 마우스 오른쪽 버튼으로 클릭하십시오.

행복을전해요 2021. 1. 13. 06:22

오른쪽 클릭으로 버튼을 누를 수 없습니다. 마우스 청취자에게 그런 줄을 추가하십시오.

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. 
-------------------

오른쪽 클릭시 눈에 띄게 눌리는 버튼은 버튼의 "정상적인"동작의 일부가 아닙니다. JToggleButtons를 사용하여 가짜로 만들 수도 있고 , 마우스 오른쪽 버튼을 누르고있는 동안 버튼의 배경색과 테두리를 변경할 수도 있습니다.

-------------------

이벤트가 제대로 트리거되고 (디버그 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