是否可以在JavaFX中将CanView放在Canvas上?
我是javafx的新手。 我正在开发一个应用程序,其中我有一个canvas,我已经在其中绘制了几个图像。 我想在我的canvas上添加一个ImageView
并在点击ImageView时实现一个弹出窗口?
是否有任何可能有或没有ImageView
(按钮或任何控件?)或是否限制使用canvas上的控件?
我需要一些建议。
您可以在Canvas
顶部堆叠ImageView
。 使用StackPane
。 您可以稍后将鼠标侦听器添加到ImageView
。
是否有任何可能有或没有
ImageView
(按钮或任何控件?)或是否限制使用canvas上的控件?
包括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); } }
输出:
- 场景有黑色背景
- canvas有蓝色背景
- ImageView是熊。
如果你只想在canvas顶部添加按钮,图像……你应该使用StackPane 。 您首先添加canvas,然后您可以添加Button或任何您想要的。
StackPane stack = new StackPane(); stack.getChildren().addAll(yourCanvas, yourButton);
您应该阅读本文,以便更好地理解使用JavaFX进行Layouting。