我是JavaFX新手(使用swing已经很长时间了),并且正在尝试使用BorderPane。人们会认为BorderPane类似于BorderLayout,但最大的区别是BorderPane的中心将扩展以适应其内容,而BorderLayout将收缩以适应窗口。
我在JFrame中使用JFXPanel,有一个3部分的界面:左边的面板(一些文本),底部的一些按钮(流控制),在中心想要有一个动态面板/窗格,在大部分情况下只是一个ImageView。我把它都设置好了,它工作得很好,但我在这里使用的相机图像比我的显示器大得多。我尝试通过将imageview的宽度绑定到不同的东西(如锚窗格、场景大小(工作,但不正确)等)来缩放图像。我遇到的问题是,由于BorderPane的中心面板扩展以适应其内容,它将扩展,并且永远不会有一个合适的值可以绑定。我需要图像在窗口中以任何大小都完全可见。
这是我一直在使用的代码。
protected void setupFXWindow(JFXPanel mainPanel) {
butNext = new Button("Next Step");
butBack = new Button("PreviousStep Step");
butQuit = new Button("Cancel Signature Generation");
butNext.setTooltip(new Tooltip("Next step..."));
butBack.setTooltip(new Tooltip("Previous Step..."));
butQuit.setTooltip(new Tooltip("Quit generating a signature"));
Group root = new Group();
Scene scene = new Scene(root, javafx.scene.paint.Color.ALICEBLUE);
javafx.scene.image.Image fximage = new javafx.scene.image.Image(new File(image.getSourceFilePath()).toURI().toString());
ImageView iv1 = new ImageView();
iv1.setImage(fximage);
iv1.setPreserveRatio(true);
VBox directionsPanel = new VBox();
HBox authorflowPanel = new HBox(); //bottom buttons for next, back, etc.
mainPanel.setScene(scene);
//INSTRUCTIONS
directionsStepLabel = new Text();
directionsLabel = new Text();
setDirectionsText("Directions will be placed here.");
exampleLabel = new Text("Example");
exampleIconLabel = new Text("An example image will be shown here.");
directionsPanel.setPadding(new javafx.geometry.Insets(5, 5, 5, 5));
directionsPanel.getChildren().addAll(directionsStepLabel, directionsLabel, exampleLabel);
authorflowPanel.getChildren().addAll(butBack, butQuit, butNext);
BorderPane bp = new BorderPane();
bp.prefHeightProperty().bind(scene.heightProperty());
bp.prefWidthProperty().bind(scene.widthProperty());
bp.setLeft(directionsPanel);
bp.setBottom(authorflowPanel);
bp.setCenter(iv1);
root.getChildren().add(bp);
}
上面的代码使其看起来像这样:
将ImageView
包装在某种窗格
中(例如Stackpane
)。然后窗格将填充边框窗格的中心区域,您可以绑定到其宽度和高度:
ImageView iv1 = new ImageView();
iv1.setImage(fximage);
iv1.setPreserveRatio(true);
StackPane imageContainer = new StackPane(iv1);
iv1.fitWidthProperty().bind(imageContainer.widthProperty());
iv1.fitHeightProperty().bind(imageContainer.heightProperty());
// ...
bp.setCenter(imageContainer);
为了实现类似于minimap的功能,我使用在之上添加了一个。我将的缩放x和y属性绑定到以实现缩放效果。我在中添加了一些对象。这些圆圈当然也应该是可缩放的(它们确实是),但在这种情况下,更重要的是,当缩放发生时,它们应该保持在它们的相对位置。下面的图片显示了GUI到目前为止的样子。 到目前为止,我已经区分了两个有问题的案例。 在这个更简单的例子中,除了放大图像似乎使其超出的边界之外,一切都很好。因此
我在使用Discord。js和一个长时间运行的Discord bot最近由于消息而突然停止工作。成员对象始终为空。 例如: 这始终会产生:TypeError:无法读取null的属性“roles” 在我们查看消息的代码库中,这种错误也随处可见。成员 即使控制台完全记录消息对象,我们也可以肯定地看到成员属性为空。 Discord.js?有什么变化吗?
本文向大家介绍Android中imageView图片放大缩小及旋转功能示例代码,包括了Android中imageView图片放大缩小及旋转功能示例代码的使用技巧和注意事项,需要的朋友参考一下 一、简介 二、方法 1)设置图片放大缩小效果 第一步:将<ImageView>标签中的android:scaleType设置为"fitCenter" 第二步:获取屏幕的宽度 第三步:设置seekBar的最大p
本文向大家介绍Android手势滑动实现ImageView缩放图片大小,包括了Android手势滑动实现ImageView缩放图片大小的使用技巧和注意事项,需要的朋友参考一下 本文推出了两种Android手势实现ImageView缩放图片大小的方法,分享给大家供大家参考,具体内容如下 方法一: 将以下代码写到MulitPointTouchListener.java中,然后对你相应的图片进行OnTo
本文向大家介绍redis适合场景八点总结,包括了redis适合场景八点总结的使用技巧和注意事项,需要的朋友参考一下 redis适合什么场景? 1、缓存 缓存现在几乎是所有中大型网站都在用的必杀技,合理的利用缓存不仅能够提升网站访问速度,还能大大降低数据库的压力。Redis提供了键过期功能,也提供了灵活的键淘汰策略,所以,现在Redis用在缓存的场合非常多。 2、排行榜 很多网站都有排行榜应用的,如
但它的行为仍然不正确。 我觉得我做错了,但我不知道如何做对。在这样的窗体上重新缩放控件的正确方法是什么?有没有更好的方法来达到我所期待的结果?