当前位置: 首页 > 知识库问答 >
问题:

javafx扫雷器:如何区分鼠标右键和左键输入

司空奕
2023-03-14

我正在开发一个javafx扫雷游戏,目前只使用鼠标左键输入。我想用鼠标右键也让用户可以标记可能的炸弹。我查看了Button类的Oracle网页,它说:

“当按下并释放按钮时,将发送ActionEvent。应用程序可以通过实现EventHandler来处理ActionEvent来执行基于此事件的某些操作。按钮也可以通过实现EventHandler来处理MouseEvent来响应鼠标事件。”

https://docs.oracle.com/javafx/2/api/javafx/scene/control/button.html

我尝试了几种不同的方法,都没有成功。

    for (int row = 0; row < 8; row++){
        for (int col = 0; col <8; col++){

            MineButton button = new MineButton(row, col);
            button.setPrefSize(100, 100);
            button.setText("?");
            button.setStyle("-fx-font: 22 arial; -fx-base:#dcdcdc;");
            button.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {

                    if ( button.isAMine() == true){
                        button.setText("B");

                        for( int row1 = 0; row1 < 8; row1++){
                            for ( int col1 = 0; col1 < 8; col1++){

                            if (mineButtons[row1][col1].isAMine() == true){
                                    mineButtons[row1][col1].setText("B");
                                    mineButtons[row1][col1].setStyle("-fx-   font: 22 arial; -fx-base: #dc143c;");
                                }
                            }
                        }
                    }
                    else{

                        recursion(mineButtons, button.getX(), button.getY());

                    }       
                }   
            }); 

共有1个答案

刁璞
2023-03-14

如果您想处理MouseEvent,请使用以下代码。会管用的。

button.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                if(event.getButton() == MouseButton.SECONDARY){
//                  Type code to set flag here
                }
            }
        });
 类似资料:
  • 问题内容: 如何使用jQuery获取单击的鼠标按钮? 这是由鼠标右键和鼠标左键触发的,能捕捉鼠标右键的方式是什么?如果以下内容存在,我将很高兴: 问题答案: 从jQuery 1.1.3版开始,规范化了,因此您不必担心浏览器兼容性问题。有关文档 分别为鼠标左键,鼠标中键和鼠标右键提供1、2或3,因此:

  • 从pygame的api来看,它有: 但是没有办法区分右点击和左点击?

  • JavaFX8控制器如何判断Shift、Ctrl、Alt或Enter键位于键盘的左边还是右边? 尝试使用JNativeHook(他们最近移动了),它几乎可以作为一个解决方案,但不能识别一些键,时间不精确,实现起来有点笨拙,尤其是因为我不能为所有平台编译本机代码。许可条款也有点混乱(稳定版本的GPL,在我的情况下不是一个选项,可能会转向LGPL...)。

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

  • 1.首先准备我们的HTML <div class="menu"> <ul> <li>春眠不觉晓,处处闻啼鸟。</li> <li>Any <ul> <li>lover</li> <li>Gold