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

在JavaFX中右击扫雷器

徐峰
2023-03-14
private class Tile extends StackPane {
    private int x, y;
    private boolean hasBomb;
    private boolean isOpen = false;

    private Rectangle border = new Rectangle(TILE_SIZE - 2, TILE_SIZE - 2);
    private Text text = new Text();

    public Tile(int x, int y, boolean hasBomb) {
        this.x = x;
        this.y = y;
        this.hasBomb = hasBomb;

        border.setStroke(Color.BLACK);
        border.setFill(Color.GREY);
        text.setFont(Font.font(18));
        text.setText(hasBomb ? "X" : "");
        text.setVisible(false);

        getChildren().addAll(border, text);

        setTranslateX(x * TILE_SIZE);
        setTranslateY(y * TILE_SIZE);

        onMouseClicked: function(e:MouseEvent):Void {
            if (e.button == MouseButton.SECONDARY) {
                setOnMouseClicked(e -> open());
            }
        }
    }

共有1个答案

隗昀
2023-03-14

您的onmouseclicked处理程序出了问题。

有关lambda表达式的正确语法,请参见oracle教程的语法部分。

正确的做法是

this.setOnMouseClicked(e -> {
    if (e.getButton() == MouseButton.SECONDARY) {
        open();
    }
});
    null
 类似资料:
  • 我正在开发一个javafx扫雷游戏,目前只使用鼠标左键输入。我想用鼠标右键也让用户可以标记可能的炸弹。我查看了Button类的Oracle网页,它说: “当按下并释放按钮时,将发送ActionEvent。应用程序可以通过实现EventHandler来处理ActionEvent来执行基于此事件的某些操作。按钮也可以通过实现EventHandler来处理MouseEvent来响应鼠标事件。” http

  • 一款扫雷玩法的放置游戏,不过这个简单很多,只有4x4个升级。 游戏没存档系统,所以,刷新即重新开始~

  • 本文向大家介绍C++实现扫雷、排雷小游戏,包括了C++实现扫雷、排雷小游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C++实现扫雷、排雷小游戏的具体代码,供大家参考,具体内容如下 界面: 游戏思想:  扫雷游戏: 1.随机给定雷点坐标 2.判断每个点的雷情况 3.由用户根据上下左右键到达指定位置,点击enter,翻开该点         如果该点是雷点,此时翻开所有雷点,告知游

  • 问题内容: 嗨,我正在搜索如何(仅)启用鼠标右键,并使用NetBeans在jFrame中显示一个弹出菜单。使用我的代码为: 我仍然无法获得最佳结果,因为它还会在单击鼠标左键时弹出,也向我暗示我正在做任何错误操作。 问题答案: 这就是它应该真正做到的事情,它很棒而且有用 别忘了添加一个导入 玩得开心…

  • 本文向大家介绍c# 实现自动扫雷,包括了c# 实现自动扫雷的使用技巧和注意事项,需要的朋友参考一下     年前无意看到一个用Python写的小桌面程序,可以自动玩扫雷的游戏,觉得挺有意思,决定用C#也做一个。【真实情况是:我知道Python最近比较火,非常适合搞爬虫、大数据、机器学习之类的,但现在连桌面程序都用Python做了吗?还给不给.NET程序员活路了?简直不能忍!】    春节期间正好有

  • 我在将带有3个按钮的VBox放在BorderPane右侧部分的中心时遇到问题。有没有办法在FXML或CSS中实现这一点? 更新: 这是FXML中的代码 这是CSS文件 以及应用程序的屏幕截图。我希望Vbox位于BorderPate右侧部分的中心。非常感谢您的回复!