当前位置: 首页 > 知识库问答 >
问题:

JavaFX中窗格的痛苦。如何缩放固定左上角的节点?

姬墨竹
2023-03-14
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;


public class TestScale extends Application{
    Group root;
    Pane pane;
    Scene scene;    
    Rectangle rect0;

    @Override
    public void start(Stage stage) {
        root = new Group();
        scene = new Scene(root, 200, 160);
        rect0=new Rectangle(0, 0, 200, 160);
        rect0.setFill(Color.BLUE);
        pane = new Pane();           
        pane.getChildren().add(rect0);
        Button btnForward = new Button();
        btnForward.setText(">");
        btnForward.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                transform(pane);
            }
        });
        root.getChildren().add(pane);
        root.getChildren().add(btnForward);
        stage.setScene(scene);
        stage.show();

    }



    void transform (Node node){
        node.setScaleX(0.5);
        node.setScaleY(0.5);
    }

   public static void main(String[] args) {
        launch(args);
    }    
}

共有1个答案

薄涵衍
2023-03-14

当您使用Scalex/Scaley时,缩放是从节点的中心开始的。

来自JavaDocs

发生缩放的枢轴点是未转换的布局边界的中心。

node.setScaleX(0.5);
node.setScaleY(0.5);
node.setTranslateX(0 - node.getScene().getWidth()/4);     
node.setTranslateY(0 - node.getScene().getHeight()/4);
 类似资料:
  • 问题我如何可以嵌入这个应用程序到SPlitPane,在左边将是另一个面板。 不幸的是,代码导致了错误的坐标,

  • FXML代码: 和相关的CSS代码: 我如何保持宽高比并根据分辨率拉伸窗格?例如。在1920x1080分辨率下,浅灰色应为1280x720。在800x600分辨率下,它是600x400。以及介于两者之间的一切。

  • 我有4列网格窗格(fixed1,liquid,fixed2,liquide)。每个液柱的宽度必须为=(gridpane width-fixed1-fixed2)/2。换句话说,是液柱宽度的50%。重要提示:所有宽度=液体宽度固定宽度。为了设置列约束,我找到了以下代码: 但是,此代码设置的不是液体宽度的百分比,而是所有宽度的百分比。怎么做?

  • 我创建了一个由HBox、按钮和标签组成的数组。每次按下“添加”按钮,我都会设置:

  • 嘿,我有一个网格,对于其中一个节点,我希望它能够占据整行。 但我似乎不知道如何使用GridPane.setColumnSpan(node,column span); 这是我的代码 这就是现在的样子 这就是我想要的样子 我将非常感谢任何帮助。谢谢

  • 我一直在尝试使用JavaFX中的缩放转换,但还没有完全理解它。基本上,我有一个窗格包含一个复杂的图形,并希望能够撤销它。缩放部分本身工作得很好,但是,封闭的滚动窗格将不适应图形。 为了简单起见,我将发布一个简短的示例,其中我的图被一个标签替换: null 我错过了什么?如何使滚动窗格适应内容视图? 谢谢你的帮助。