2016-12-09 24 views
1

JavaFXを使用して、特定のテーブル行を囲むようにカスタム境界線を描画したいとします。次の画像では、現在の状態を見ることができます。JavaFX:テーブル行複数色の境界線のスタイル

this picture

私は何をする必要があるどのような黒い線と黄色の線の間の空白を埋めています。

私の最初のアイデアは、2つのスタイルを定義し、それらの両方を追加しました:

.tableRowStyle1{ 
    -fx-border-width: 3; 
    -fx-border-style: solid; 
    -fx-border-color: black; 
} 

.tableRowStyle2{ 
    -fx-border-color: yellow; 
    -fx-border-style: segments(12, 12, 12, 12); 
    -fx-border-width: 3; 
} 

残念ながら、私はいつものスタイルがTableRowに追加された順序れる黄色透明の破線、で終わりますあなたのスタイルクラスは関係ありません。

もう一つのアイデアは、線形および放射状の勾配で遊ぶことでした。直線勾配は破線を生成しません。放射状のグラデーションはこれを行うようですが、ダッシュの長さは円ではなく矩形で動作するため、均等ではありません。

このトピックに関するご意見は大変ありがとうございます。

答えて

1

異なるスタイルルールを使用すると、1つは他のスタイルルールを置き換えます。

カンマで区切った値と同じルールで異なる境界線のスタイルを指定する必要があります。 phaseを使用して、初期オフセットを変更することができます。

@Override 
public void start(Stage primaryStage) { 
    Region region = new Region(); 
    region.getStyleClass().add("border-region"); 

    Scene scene = new Scene(region, 300, 300); 
    scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); 

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

のstyle.css

.border-region { 
    -fx-background-color: red; 
    -fx-border-color: yellow, black; 
    -fx-border-style: segments(12, 12), segments(12, 12) phase 12; 
    -fx-border-width: 3; 
} 

はところで:スタイル/オンすることができるものであると考えられることから、代わりにスタイルクラスのPseudoClassを使用することを検討してくださいあなたはスタイルクラスを複数回追加することを心配する必要がないので、PseudoClassを使うほうが簡単です。

関連する問題