我有一个自定义类,我使用JavaFX FXML加载器来创建对象。
我可以使用带有count属性的setter的简单测试类重现我的问题:
public class MyBlock {
int count;
public MyBlock(){
}
public void setCount(int i){
count = i;
}
}
FXML文件是:
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import com.mycode.io.base.*?>
<?import com.mycode.io.elements.*?>
<Header fx:id="header" xmlns:fx="http://javafx.com/fxml/1" >
<children>
<MyBlock fx:id="chartWindow" count="5"/>
</children>
</Header>
当我运行应用程序时,我收到错误,指向&#34; MyBlock&#34; FXML中的一行。
javafx.fxml.LoadException:
我对FXMLLoader的理解是它使用setter来设置属性。我花了一段时间才弄清楚错误是由于我没有count
属性的吸气剂造成的。因此,通过将getter代码添加到我的类中,一切都很完美。
public class MyBlock {
int count;
public MyBlock(){
}
public void setCount(int i){
count = i;
}
// added getter
public int getCount(){
return count;
}
}
我已经阅读了Java FX 8.0 FXML简介以及&#34; Property Elements&#34;他们提到你需要一个二传手,但没有提到需要一个吸气剂。
我的问题有两个问题。为什么FXMLLoader需要getter才能使用setter?有没有办法使用FXML加载器而不必为每个属性编写getter。