2

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 を介してこのコンポーネントに直接アクセスできないのはなぜですか?

4

1 に答える 1