我想用绿色渐变色创建背景BorderPane,如下例所示。问题是如何使用Java代码执行此操作?
例如:
.linear-grad2{
-fx-background-color: linear-gradient(from 25% 25% to 100% 100%, #dc143c, #32cd32);
}
我想用颜色选择器改变颜色。我不知道如何用css代码做到这一点。
答案 0 :(得分:7)
Hej Peter,
我前段时间这样做过:
package de.professional_webworkx.blog.colorgradient;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.ColorPicker;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
/**
*
* @author ottp
*/
public class ColorGradient extends Application {
@Override
public void start(Stage primaryStage) {
final Pane pane = new BorderPane();
pane.setPrefWidth(300);
pane.setPrefHeight(200);
pane.setStyle("-fx-background-color: linear-gradient(from 25% 25% to 100% 100%, #dc143c, #661a33)");
final ColorPicker picker = new ColorPicker();
picker.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
Color value = picker.getValue();
String colorString = value.toString();
String substring = colorString.substring(2, colorString.length()-2);
pane.setStyle("-fx-background-color: linear-gradient(from 25% 25% to 100% 100%, #" + substring + ", #661a33)");
}
});
VBox vBox = new VBox();
vBox.getChildren().add(pane);
vBox.getChildren().add(picker);
Scene scene = new Scene(vBox);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
将其作为您自己解决方案的起点.. 它仅更改第一个颜色值。
帕特里克