JavaFX 上的这个简单程序不会显示弹出菜单。事件触发(打印出“22222222222”),但右键单击时没有显示任何内容

问题描述 投票:0回答:1

我正在做我的大项目,当涉及到上下文菜单时,它没有成功,我尝试在一个简单的项目中确保我的项目的复杂性阻止显示弹出菜单,但即使在一个简单的项目上没有成功,看起来像一个错误

package org.example.testinterface;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

import java.io.IOException;

public class HelloApplication extends Application {
    @Override
    public void start(Stage stage) throws IOException {
        ContextMenu contextMenu = new ContextMenu(new MenuItem("Удалить"));
        contextMenu.setStyle("-fx-background-color: red");
        Canvas canvas = new Canvas(1500, 1000);
        canvas.setOnContextMenuRequested(contextMenuEvent -> {
            System.out.println("2222222222222222222222222222");
            contextMenu.show(canvas.getScene().getWindow(), contextMenuEvent.getX(), contextMenuEvent.getY());
        });
        AnchorPane root = new AnchorPane(canvas);
        Scene scene = new Scene(root, 1500, 1000);
        stage.setTitle("Hello!");
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }
}
java javafx canvas
1个回答
0
投票

使用

getScreenX() / getScreenY(
) 代替
getX() / getY()

© www.soinside.com 2019 - 2024. All rights reserved.