我有一個JavaFX應用程序。 TabPane中的某些選項卡有一個「my-view」類,內部有一個複雜的結構,包含標籤,文本字段等。我有一個CSS規則來設置字體大小在這些子項,如:在JavaFX中動態調整CSS字體大小規則
.my-view .label, .my-view .my-text-field-a, .my-view .my-text-field-b {
-fx-font-size: 12px;
}
我想允許用戶按Ctrl- +動態增加文字大小。我真正想要的是能夠動態地動態調整上述CSS中的「12px」。但是,我看不到在JavaFX中執行此操作的方法。 setStyle方法只允許爲當前節點設置樣式,而不是如上所述的規則。新的JavaFX 8 StyleableProperty接口似乎對我來說是錯誤的 - 它允許代碼讀取但不寫入CSS屬性。我真的不想在代碼中自己找到所有相關的文本字段,並調用setFont; CSS規則在這裏似乎是正確的機制。
我現在認爲要做到這一點的唯一方法是爲每個可能要設置的字體大小創建一個新類(有點像這裏建議的:Hot to update dynamically font size),然後設置相應的類來設置大小,例如
.my-view-12 .label, .my-view-12 .my-text-field-a, .my-view-12 .my-text-field-b {
-fx-font-size: 12px;
}
.my-view-14 .label, .my-view-14 .my-text-field-a, .my-view-14 .my-text-field-b {
-fx-font-size: 14px;
}
我可以自動生成的CSS(適用於所有字體大小說1-100),但這種方法似乎只是一個醜陋的黑客。有沒有更好的方法在JavaFX中做到這一點?
是否所有文本都顯示在標籤內,使用相同(可更改)字體大小的類「my-view」? –
目前,是的,儘管這可能不是這種情況(因此我使用my-text-field-類而不是文本字段)。在這種情況下有更簡單的解決方案嗎?我確實嘗試使用-fx-font-size的「繼承」值,但在終端上出現了很多錯誤。 –