我的JavaFX中的自定义组件出现问题。
我的自定义组件包含包含TableView和TabPane的分割窗格:
MasterDetail.fxml
<fx:root type="javafx.scene.layout.VBox" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<SplitPane dividerPositions="0.5" orientation="VERTICAL">
<items>
<AnchorPane>
<children>
<TableView fx:id="table"/>
</children>
</AnchorPane>
<AnchorPane>
<children>
<TabPane fx:id="tabPane"/>
</children>
</AnchorPane>
</items>
</SplitPane>
</children>
</fx:root>
我想在另一个fxml中使用我的自定义控件,所以我创建了它,以及如何在MasterDetail组件中为TableView声明列?
例如,我想做这样的事情:
<MasterDetail fx:id="masterDetail">
<table>
<columns>
<TableColumn fx:id="nameColumn" prefWidth="75.0" text="Name"/>
<TableColumn fx:id="createDateColumn" prefWidth="75.0" text="Create date"/>
</columns>
</table>
</MasterDetail>
有可能在fxml中执行此操作吗?
答案 0 :(得分:0)
可以在&#39; masterDetail&#39;中定义表格列的数量。零件。但要发生这种情况,我们必须定义读取表格列的自定义属性。
示例:
<CustomeTable>
<children>
<TableView fx:id="table"/>
</children>
</CustomeTable>
定义扩展AnchorPane的CustomeTable。
public class CustomeTable extends AnchorPane{
private ObjectProperty<Integer> noOfColumns = new SimpleObjectProperty<Integer>();
public void setNoOfColumns(Integer noOfColumns){
noOfColumns.set(noOfColumns);
}
public Integer getNoOfColumns(){
return noOfColumns.get();
}
public CustomeTable(){
// add the listener to the ObjectProperty
// which updates the noOfColumns into table
noOfCoulmns.addListener();
}
}