我想以与 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 继承的类?
顺便说一句,如果问题有用,别忘了投票:)
慕的地6264312
收到一只叮咚
相关分类