2

JavaFX を使用して、特定のテーブル行の周りにカスタム ボーダーを描画したいと思います。次の図で、現在の状態を確認できます。

この絵

私がする必要があるのは、黄色い線の間の空白を黒い線で埋めることです。

私の最初のアイデアは、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のスタイル クラスに追加される順序は重要ではありません。

別のアイデアは、線形グラデーションと放射状グラデーションをいじることでした。線形グラデーションは破線を生成しません。放射状グラデーションはこれを行うように見えますが、長方形ではなく円に対して機能することを意図しているため、ダッシュの長さは偶数ではありません。

このトピックに関するヘルプは大歓迎です!

4

1 に答える 1

3

異なるスタイル ルールを使用すると、一方が他方に置き換わります。

コンマ区切りの値として、同じルールでさまざまな境界線スタイルを指定する必要があります。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();
}

スタイル.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

于 2016-12-09T09:40:41.833 に答える