亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在一行中設置 FXML“填充”屬性

如何在一行中設置 FXML“填充”屬性

慕萊塢森 2023-06-14 16:06:17
我想以與 C# XAML 文件中相同的方式定義按鈕的填充。而不是寫這樣的東西:<Button fx:id="btn1" ...>    <padding>        <Insets top="0" right="5" bottom="10" left="5" />    </padding></Button><Button fx:id="btn2" ...>    <padding>        <Insets topRightBottomLeft="5" />    </padding></Button>,寫起來會更容易:<Button fx:id="btn1" ... padding="0 5 10 5" /><Button fx:id="btn2" ... padding="5" />我不知道為什么“填充”屬性有這個限制。我在FXML 文檔中看到,類型強制可以通過為給定類型實現valueOf()方法來完成:public static Insets valueOf(String info) {    // Data retrieval}但我不知道將它放在哪里,因為Insets類被鎖定(JDK)。因為這是一個靜態方法,我認為該方法可以在其他地方實現,但啟動應用程序總是給我一個強制錯誤:Caused by: java.lang.IllegalArgumentException: Unable to coerce 0 5 10 5 to class javafx.geometry.Insets.目前,我找到的唯一解決方案是:定義一個名為GButton的新 FXML 組件,它繼承了Button定義一個繼承Insets的Spacing類,并為該類實現一個valueOf方法為 GButton 添加一個“space”屬性(ObjectProperty<Spacing>的實例),其行為與“padding”相同,并定義其 getter 和 setter。有沒有一種簡單的方法可以在 Button 標記中定義 FXML“填充”,而無需創建從 Insets 繼承的類?順便說一句,如果問題有用,別忘了投票:)
查看完整描述

2 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

我不知道為什么“填充”屬性有這個限制。我在 FXML 文檔中看到,類型強制可以通過實現valueOf()給定類型的方法來完成

這需要Insets實現一個static?valueOf(String)方法。那個類型不存在這個方法;因此您不能簡單地通過屬性指定值。

FXML簡介:

可以通過在目標類型上static valueOf()定義一個方法來實現其他轉換。

不過,您可以使用該style屬性通過 CSS 指定值。這通常比將對象分配給屬性更短:

<Button?fx:id="btn1"?style="-fx-padding:?0?5?10?5;"?.../>


查看完整回答
反對 回復 2023-06-14
?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

我知道這個問題很老,但希望我能提供一些有見地的信息。我有同樣的問題;?不幸的是,FXML 沒有完整的文檔,但在我看來,將初始化模型拼湊在一起使其變得直觀。

無論如何,您采用了正確的方法,只是沒有完全完成:

<padding>
????<Insets?top="10"?right="20"?bottom="30"?left="40"/>
????</padding>

將創建一個等效于 CSS 的填充padding: 10 20 30 40,當然,您可以更改它(甚至使用我假設的 FXML 變量)。

不過,一般來說,任何具有javafx.beans適當約定屬性的類,您都可以很容易地在 FXML 中創建自定義組件并像上面那樣分配成員值。

希望這對任何人都有幫助!


查看完整回答
反對 回復 2023-06-14
  • 2 回答
  • 0 關注
  • 314 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號