CSS を介してコントロールをカスタマイズする方法を掘り下げていて、かなり進んでいます。そのため、トラックの背景を透明に設定するなどして、スクロールバーを完全にカスタマイズできます。しかし、私は ScrollBarSkin にこだわっています (ScenicViewer で調査)。このスキンにはデフォルトの背景色 (グラデーション) と境界線があり、変更できないようです。私の質問は、CSS を介して背景色とインセットを変更するために、TableCellSkin や ScrollBarSkin などにアクセスするにはどうすればよいですか?
編集:jdk7を使用しています
edit2: ScrollPaneSkin の caspian.css にいくつかの構文が見つかりました。スクロールバーとテーブルセルで同じことを試しました:
ScrollBarSkin>* {
-fx-base: transparent;
-fx-border-color: #00ff00;
-fx-background-color: #0000ff;
}
しかし、運が悪い。
jewelseaの回答に基づいて解決策を見つけました(thx mate!)
ScrollBarSkin を拡張する新しいクラスを作成し、getSkinnable() をオーバーライドしています。これは次のようになります。
public class MyScrollBarSkin extends ScrollBarSkin{
public MyScrollBarSkin(ScrollBar scrollBar) {
super(scrollBar);
}
@Override
public Insets getInsets() {
// TODO Auto-generated method stub
return super.getInsets();
}
@Override
public ScrollBar getSkinnable() {
ScrollBar curr = super.getSkinnable();
curr.getSkin().getNode().setStyle("-fx-background-color: transparent;");
return curr;
}
}
対応する css で、このスキンを jewelsea として参照します。出来上がり!
まだ小さな疑問が 1 つ残っています。CSS を介してこのコンポーネントに直接アクセスできないのはなぜですか?