当前位置: 首页 > 面试题库 >

哪个鼠标键位于中间?

孙才捷
2023-03-14
问题内容

我目前正在用Java开发程序,仅当用户同时用鼠标左键和右键单击时,才必须触发特定事件。

由于这有点不合常规,因此我决定首先进行测试。这里是:

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

public class GUI
{
    private JFrame mainframe;
    private JButton thebutton;

    private boolean left_is_pressed;
    private boolean right_is_pressed;

    private JLabel notifier;

    public GUI ()
    {
        thebutton = new JButton ("Double Press Me");
        addListen ();
        thebutton.setBounds (20, 20, 150, 40);

        notifier = new JLabel (" ");
        notifier.setBounds (20, 100, 170, 20);

        mainframe = new JFrame ("Double Mouse Tester");
        mainframe.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
        mainframe.setResizable (false);
        mainframe.setSize (400, 250);

        mainframe.setLayout (null);

        mainframe.add (thebutton);
        mainframe.add (notifier);

        mainframe.setVisible (true);

        left_is_pressed = right_is_pressed = false;
    }

    private void addListen ()
    {
        thebutton.addMouseListener (new MouseListener ()
        {
            @Override public void mouseClicked (MouseEvent e) { }
            @Override public void mouseEntered (MouseEvent e) { }
            @Override public void mouseExited (MouseEvent e) { }

            @Override public void mousePressed (MouseEvent e)
            {
                //If left button pressed
                if (e.getButton () == MouseEvent.BUTTON1)
                {
                    //Set that it is pressed
                    left_is_pressed = true;

                    if (right_is_pressed)
                    {
                        //Write that both are pressed
                        notifier.setText ("Both pressed");
                    }

                }
                //If right button pressed
                else if (e.getButton () == MouseEvent.BUTTON3)
                {
                    //Set that it is pressed
                    right_is_pressed = true;

                    if (left_is_pressed)
                    {
                        //Write that both are pressed
                        notifier.setText ("Both pressed");
                    }
                }
            }

            @Override public void mouseReleased (MouseEvent e)
            {
                //If left button is released
                if (e.getButton () == MouseEvent.BUTTON1)
                {
                    //Set that it is not pressed
                    left_is_pressed = false;

                    //Remove notification
                    notifier.setText (" ");
                }
                //If right button is released
                else if (e.getButton () == MouseEvent.BUTTON3)
                {
                    //Set that it is not pressed
                    right_is_pressed = false;

                    //Remove notification
                    notifier.setText (" ");
                }
            }
        });
    }
}

我对其进行了测试,并且可以正常工作,但是存在问题。

如您所见,鼠标左键由表示,MouseEvent.BUTTON1鼠标右键由表示MouseEvent.BUTTON3

如果用户的鼠标没有滚轮(显然仍然存在此类鼠标),则在MouseEvent中仅设置两个按钮。这是否意味着右键将由MouseEvent.BUTTON2代替MouseEvent.BUTTON3?如果是,如何更改代码以适应此要求?有什么办法可以检测到这种情况吗?

我阅读了在MouseListener界面和MouseEvent上可以找到的所有内容,但是却找不到任何相关信息。


问题答案:

要确定按下了哪个鼠标按钮,SwingUtilities的以下三种方法可以帮助您:

  1. isLeftMouseButton
  2. isMiddleMouseButton
  3. isRightMouseButton


 类似资料:
  • 我正在尝试确定在一个等距2D游戏中鼠标位于哪个精灵上方。我认为我的最佳选择是将每个精灵绘制成不同的颜色,并将其转换为纹理2D,此时我可以从鼠标点获取颜色数据,并对照绘制的精灵进行检查。 但是,这种方法存在的问题是,我无法将单个精灵的颜色更改为纯色。如果我更改了spriteBatch中的颜色。绘制调用,它只着色精灵的颜色,而不是以纯色绘制,因此我从纹理中检索的数据没有帮助。 在用纯色绘制这些精灵方面

  • 嗨,我想节省4个鼠标位置,当我点击按钮。 如下所示:ButtonClick->1.mouseClick/保存鼠标位置->2.mouseClick/保存鼠标位置.....

  • 有什么想法吗?提前谢了。

  • 问题内容: 有没有一种方法可以获取鼠标的位置并将其设置为var? 问题答案: 您可以设置一个回调来响应事件: 我不确定您想要哪种变量。在上面,我设置了局部变量并设置了鼠标坐标。 如果创建类方法,则可以设置实例属性和鼠标坐标,然后可以从其他类方法访问它们。

  • 我已经通过以下链接: Selenium WebDriver-如何按住鼠标右键? 我知道在Selenium中使用Robot类很容易完成这项任务,但Robot类的主要缺点是:关键字/鼠标事件只在当前窗口实例上有效。例如,假设一个代码正在执行任何robot类事件,并且在代码执行期间,用户已移动到其他屏幕,则该屏幕上将出现关键字/鼠标事件。 因为我的测试套件在某个虚拟机上运行,所以这对我没有用处。我必须测

  • 问题内容: 如何使用jQuery获取单击的鼠标按钮? 这是由鼠标右键和鼠标左键触发的,能捕捉鼠标右键的方式是什么?如果以下内容存在,我将很高兴: 问题答案: 从jQuery 1.1.3版开始,规范化了,因此您不必担心浏览器兼容性问题。有关文档 分别为鼠标左键,鼠标中键和鼠标右键提供1、2或3,因此: