1

私は、BorderFactory.createLoweredBevelBorder() によって作成された境界線を持つ JTextField の 3D 効果が気に入っています。代わりに JavaFX を使用するようになったので、ボーダーの L&F は CSS によって制御されます。また、デフォルトの外観は単純な線の境界線です。CSSファイルを編集して境界線を太くし、色を変更する方法を見つけました:

.text-field { -fx-border-color: color; -fx-border-width: #; }

しかし、Swing で生成されたローダウン ベベル エフェクトを見ると、4 つの側面のうち 2 つに異なる色を付け、エッジ バリアを 45 度の角度にすることによって作成されます。では、CSS を使用してそれを実現するにはどうすればよいでしょうか。

4

3 に答える 3

4

JavaFX CSS リファレンス ガイドには次のように書かれています。

JavaFX CSS パーサーは有効な CSS 構文を解析しますが、完全に準拠した CSS パーサーではありません。このドキュメントで指定されていない構文をパーサーが処理することを期待すべきではありません。

borderor border-topand other は、このサポートされていないカテゴリのものです。
ベベルボーダーを下げるには

.text-field {
    -fx-border-insets: 0;
    -fx-border-width: 2px;
    -fx-border-color: black lightgray lightgray black;
}

または、インナーシャドウを使用してJavaFXスタイルの方法で試してください

.text-field {
    -fx-effect: innershadow(three-pass-box, gray, 12 , 0.5, 1, 1);
}

-fx-border-styleただし、必要な実際のスタイルは、属性 IMOによって実現できます。上記のガイドでそれを参照してください。

于 2012-07-25T09:18:02.410 に答える
1
-fx-border-color: top right bottom left;
-fx-border-color: transparent transparent red transparent;
于 2016-04-06T21:42:35.307 に答える
0

あなたが参照している Swing スタイルは見たことがありませんが、あなたの説明からすると、これは面取りされた外観になるはずです。

境界線をデフォルトのsolidではなくinsetとして定義するだけで、それを実行できるはずです。

.text-field {
    border: 4px inset #aaaaaa;
}

または、より細かく制御したい場合は、境界線の両側を異なる色に設定できます。

.text-field {
    border-top: 4px solid #555555;
    border-left: 4px solid #555555;
    border-bottom: 4px solid #aaaaaa;
    border-right: 4px solid #aaaaaa;
}

アウトセットリッジ、その他の境界線タイプもあります。

于 2012-07-25T00:12:23.143 に答える