是否可以仅对节点的一部分进行着色?

时间:2019-06-29 16:09:48

标签: java css javafx

我正在尝试部分填充窗格的颜色,但是没有成功。 我需要做的是,给定一个百分比,填写该节点白色的百分比。 解释起来并不容易,所以我希望这个简单的drawing能够做到:

我试图做的是创建一个以 Pane.Width * Percentage 作为其宽度的Rectangle,并最终设置颜色,但是它不能按预期工作并且过于复杂。

有没有简单的方法,可以使用CSS或仅JavaFX代码来实现? 谢谢

1 个答案:

答案 0 :(得分:0)

我不确定这是否是最好的解决方案,但只需5分钟即可完成。

import javafx.beans.binding.DoubleBinding;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;

public class PercentageColorPane extends Pane {

    double ratio;

    DoubleBinding widthBinding;

    public PercentageColorPane(double percent) {
        assert 0.0 <= percent && percent <= 100.0;
        ratio = 0.01 * percent;

        Rectangle rectangle = new Rectangle();
        rectangle.setFill(Color.RED);

        widthBinding = widthProperty().multiply(ratio);

        rectangle.setX(0.0);
        rectangle.setY(0.0);
        rectangle.heightProperty().bind(heightProperty());
        rectangle.widthProperty().bind(widthBinding);

        getChildren().add(rectangle);
    }

}

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class PercentageColorPaneDemo extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        PercentageColorPane pane = new PercentageColorPane(30.0);       
        Scene scene = new Scene(pane, 800, 600);        
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

}