Skin
JavaFXでCSS経由を定義する正しい場所はどこですか? 非常に単純なカスタム コントロールがあるとします...
public class ActionLink extends Control {
private final StringProperty text = new SimpleStringProperty();
public final StringProperty textProperty() {return text;}
public final String getText() {return text.get();}
public final void setText(String text) {this.text.set(text);}
}
コントロールでデフォルトのスキンを指定できることは知っています。私が持っていると仮定するとActionLinkSkin
...
@Override
protected Skin<?> createDefaultSkin() {
return new ActionLinkSkin(this);
}
を使用しないと、スキンが見つからないことを示す警告が表示されますcreateDefaultSkin()
。SEVERE
The -fx-skin property has not been defined in CSS for ActionLink@59ebabd \
and createDefaultSkin() returned null.
まず、コントロールの CSS がどこに属しているかわかりません。コントロールにスタイルシートを使用する必要がありますか、それともaction-link.css
スキンにスタイルシートを使用する必要がありaction-link-skin.css
ますか? 私には、スキンと CSS はかなり相互に依存しているように見えますが、コントロールにスタイルシートを使用する方が一般的であるようです。
-fx-skin
第二に、私の主な問題は、正しく検出されるように定義する場所がわからないことです。
さて、CSS が正しく設定されていると仮定して、別のスキンを含めたい場合はどうすればよいActionLinkButtonSkin
でしょうか? 親コンポーネントが CSS 経由でいずれかのスキンを選択できるように設定する方法はありますか? 例えば:
.action-link {
-fx-skin: "ActionLinkSkin";
}
...また:
.action-link {
-fx-skin: "ActionLinkButtonSkin";
}