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

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

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

我需要一些建议。

您可以在Canvas顶部堆叠ImageView 。 使用StackPane 。 您可以稍后将鼠标侦听器添加到ImageView

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

包括ButtonImageViewCanvas在内的所有控件都从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); } } 

输出:

  • 场景有黑色背景
  • canvas有蓝色背景
  • ImageView是熊。

在此处输入图像描述

如果你只想在canvas顶部添加按钮,图像……你应该使用StackPane 。 您首先添加canvas,然后您可以添加Button或任何您想要的。

  StackPane stack = new StackPane(); stack.getChildren().addAll(yourCanvas, yourButton); 

您应该阅读本文,以便更好地理解使用JavaFX进行Layouting。