2017-09-29 15 views
0

私は、カラースキーマのカップルを使ってアプリケーションを動的に切り替えることができます。私はJavaFX Regionを作成して、それに一度Borderを設定してから、別のオブジェクトを作成せずに色を変更して設定したいと思っています。何とか幅を渡す必要があり変更されません。JavaFX Borderを更新する方法はありますか?

現在、私が作成し、そのような境界線設定:

Border border = new Border(
        new BorderStroke(
         borderColor, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, 
        new BorderWidths(borderWidth))); 
this.setBorder(border); 

は、それを作成した後、この境界線の色のみを変更する方法はありますか?

は、私はまた、現在の国境から何とかそれを得ることについて考えたが、それはあまりにも非常に明確には見えません。

region.getBorder().getStrokes().get(0).getWidths().getBottom(); 

をし、私はまだ新しいオブジェクトを作成し、それを設定する必要があります。

また、もっと良い方法があるかもしれません。

答えて

0

境界線をプログラマチックに設定すると、唯一の解決策は新しいBorderを作成することだと思います。以下のようなSomethink:

BorderStroke borderStroke = region.getBorder().getStrokes().get(0); 

region.setBorder(null); 
region.setBorder(new Border(new BorderStroke(
     cp.getValue(), borderStroke.getTopStyle(), borderStroke.getRadii(), 
     borderStroke.getWidths()))); 

をしかし、あなたは、CSSから境界線を設定している場合、あなたは単に色だけ変更することができます。app.cssで

public class RegionBorder extends Application { 

    @Override 
    public void start(Stage primaryStage) throws Exception { 

     Region region = new Region(); 
     // Standard color, width, etc ... 
     region.getStyleClass().add("myborderedregion"); 

     BorderPane bp = new BorderPane(); 
     bp.setCenter(region); 

     ColorPicker cp = new ColorPicker(); 
     // Change only the color 
     cp.valueProperty().addListener((obs, oldval, newval) -> 
       region.setStyle("-fx-border-color: " + String.format("#%02X%02X%02X", 
       (int)(cp.getValue().getRed() * 255), 
       (int)(cp.getValue().getGreen() * 255), 
       (int)(cp.getValue().getBlue() * 255)))); 

     bp.setBottom(cp); 

     Scene scene = new Scene(bp, 500, 500); 
     scene.getStylesheets().add(getClass().getResource("app.css").toString()); 

     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

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

.myborderedregion { 
    -fx-border-color:green; 
    -fx-border-width:5px 
} 
関連する問題