是否可以在JavaFX中将CanView放在Canvas上?

Viz*_*Kid 5 java javafx canvas popup imageview

我是javafx的新手.我正在开发一个应用程序,其中我有一个画布,我已经在其中绘制了几个图像.我想ImageView在我的画布上添加一个并在点击ImageView时实现一个弹出窗口?

有没有可能有或没有ImageView(按钮或任何控件?)或是否限制使用画布上的控件?

我需要一些建议.

Ita*_*iha 6

你可以叠加ImageView一个Canvas.用一个StackPane.您可以稍后将鼠标侦听器添加到ImageView.

有没有可能有或没有ImageView(按钮或任何控件?)或是否限制使用画布上的控件?

所有控件包括Button,ImageView并且它们Canvas本身Node可以用来添加StackPane.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Main extends Application {

    int count = 1;

    @Override
    public void start(Stage stage) {

        StackPane root = new StackPane();
        Scene s = new Scene(root, 400, 400, Color.BLACK);

        final Canvas canvas = new Canvas(300, 300);
        GraphicsContext gc = canvas.getGraphicsContext2D();

        gc.setFill(Color.BLUE);
        gc.fillRect(10, 10, 300, 300);

        ImageView image = new ImageView("https://cdn0.iconfinder.com/data/icons/toys/256/teddy_bear_toy_6.png");

        // Listener for MouseClick
        image.setOnMouseClicked(e -> {
            Stage popup = new Stage();
            popup.initOwner(stage);
            popup.show();
        });

        root.getChildren().addAll(canvas, image);

        stage.setScene(s);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

  • 场景有黑色背景
  • 画布有蓝色背景
  • ImageView是熊.

在此输入图像描述