我是 JavaFX 技术的新手,目前我正在开发 javafx 应用程序,其中有未装饰的阶段,我能够使用下面的代码将其移动到屏幕上,但我无法从右下角调整此窗口的大小,任何人都可以建议我解决方案。
public void loadPanel(final Stage stage) {
myPane.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
xOffset = event.getSceneX();
yOffset = event.getSceneY();
}
});
myPane.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
stage.setX(event.getScreenX() - xOffset);
stage.setY(event.getScreenY() - yOffset);
}
});
this.stage = stage;
this.stage.initStyle(StageStyle.UNDECORATED);
this.stage.setScene(scene);
this.stage.show();
}
最佳答案
如果您只想调整舞台右下角的大小,您首先需要一个 if 语句来检查鼠标是否在那里。除此之外,您还需要在 DragFunction 中区分是否属于这种情况。如果是这种情况,您需要鼠标移动的值并将其添加到舞台的实际尺寸中。代码 (setOnMousePressed) 中的值 -10 就像一个边框,这样您就有了更大的区域,可以通过单击来调整窗口大小。您可以根据需要调整该值。 此代码片段可能会有所帮助:
private Boolean resizebottom = false;
private double dx;
private double dy;
myPane.setOnMousePressed(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
if (event.getX() > stage.getWidth() - 10
&& event.getX() < stage.getWidth() + 10
&& event.getY() > stage.getHeight() - 10
&& event.getY() < stage.getHeight() + 10) {
resizebottom = true;
dx = stage.getWidth() - event.getX();
dy = stage.getHeight() - event.getY();
} else {
resizebottom = false;
xOffset = event.getSceneX();
yOffset = event.getSceneY();
}
}
});
myPane.setOnMouseDragged(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
if (resizebottom == false) {
stage.setX(event.getScreenX() - xOffset);
stage.setY(event.getScreenY() - yOffset);
} else {
stage.setWidth(event.getX() + dx);
stage.setHeight(event.getY() + dy);
}
}
});
关于javafx - 如何调整 Javafx 未装饰阶段的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24106406/