【问题标题】:Overflow from rectangle over pane in javafx [closed]从javafx中的窗格上的矩形溢出[关闭]
【发布时间】:2021-12-20 16:40:11
【问题描述】:

我有以下问题: 我有一个矩形,它的宽度很大。正如您在图片 (1) 中看到的,矩形宽度大于窗格宽度。所以矩形的部分应该是不可见的或像图片(2)一样被切割

【问题讨论】:

标签: javafx


【解决方案1】:

我不明白你到底想要什么,但我想这会有所帮助

import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class TestApp extends Application {

    @Override
    public void start(Stage stage) throws IOException{
       Rectangle rec = new Rectangle(200 , 50);
       rec.setLayoutX(20);
       rec.setFill(Color.BLUE);
       Pane pane = new Pane();
       pane.setPrefSize(200, 50);
       pane.setStyle(" -fx-background-color : red");
       rec.setWidth(pane.getPrefWidth() - rec.getLayoutX());
       rec.layoutXProperty().addListener((observable, oldValue, newValue) -> {
           rec.setWidth(pane.getWidth() - newValue.doubleValue());
       });
       pane.getChildren().add(rec);
       stage.setScene(new Scene(new Pane(pane) , 400 , 100));
       stage.show();
    }

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

我希望你想要的 如果你关心这些颜色,你可以剪裁矩形 看看这个解释剪辑 https://stackoverflow.com/a/15922252/14226680

或者你的剪辑是

import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;


public class TestApp extends Application {

    @Override
    public void start(Stage stage) throws IOException{
       Rectangle rec = new Rectangle(22222 , 50);
       rec.setLayoutX(20);
       rec.setFill(Color.BLUE);
       Pane pane = new Pane();
       pane.setPrefSize(500, 50);
       pane.setStyle(" -fx-background-color : red");
       Rectangle clip = new Rectangle(pane.getPrefWidth(), pane.getPrefHeight());
       clip.setLayoutX(pane.getLayoutX());
       clip.setLayoutX(pane.getLayoutY());
       rec.setClip(clip);
       pane.getChildren().add(rec);
       stage.setScene(new Scene(new Pane(pane) , 400 , 100));
       stage.show();
    }

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

【讨论】:

  • 我建议将剪辑设置在父窗格上,而不是矩形,并将剪辑中使用的矩形的高度和宽度绑定到父窗格的高度和宽度(也许考虑到考虑父窗格的填充设置),以便剪辑自动适用于调整事件大小。也就是说,如果您想针对更一般的情况而不是仅针对此矩形和窗格的初始大小的特定情况来解决此问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 2011-06-21
相关资源
最近更新 更多