2015-08-27 3 views
0

У меня проблема с моим пользовательским компонентом в JavaFX.Использование пользовательских компонентов 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, так что я его создал и как я могу объявлять столбцы для TableView в моем компоненте MasterDetail?

Например, я хочу сделать что-то вроде этого:

<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

Можно определить количество столбцов таблицы в компоненте «masterDetail». Но для этого нам нужно определить пользовательские свойства, которые читают столбцы таблицы.

Пример:

<CustomeTable> 
     <children> 
      <TableView fx:id="table"/> 
     </children> 
    </CustomeTable> 

Определить CustomeTable, который проходит AnchorPane.

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(); 

} 


} 
+0

Спасибо, но я хочу создать пользовательский компонент (MasterDetial.fxml), содержащий таблицу. И позже я хочу использовать этот компонент в fxml, и я хочу определить столбец для таблицы, которая определена в MasterDetail.fxml. Например, в MasterDetail.fxml у меня есть пустая таблица без каких-либо столбцов, а затем я хочу создать еще один fxml, который использует компонент и добавляет столбец в таблицу, которую я определил в MasterDetail. – jlz

Смежные вопросы