2012-12-05 56 views
4

我有以下代碼。當我嘗試運行時,表格不會在GUI上顯示記錄。你能建議嗎?javaFX 2.2 - 無法從控制器填充表格

fxml_tableview.fxml - 描述表結構的fxml。

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.collections.*?> 
<?import javafx.geometry.Insets?> 
<?import java.lang.*?> 
<?import javafx.scene.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.control.cell.*?> 
<?import javafx.scene.layout.*?> 
<?import fxmltableview.*?> 

<Scene width="400" height="550" fx:controller="fxmltableview.FXMLTableViewController" 
     xmlns:fx="http://javafx.com/fxml"> 

    <GridPane alignment="center" hgap="10" vgap="10"> 
     <TableView fx:id="tableView" GridPane.columnIndex="0" GridPane.rowIndex="1"> 
      <columns> 
       <TableColumn fx:id="tradeId" text="Trade ID" prefWidth="200"/> 
      </columns>  
     </TableView> 
    </GridPane> 
</Scene> 

FXMLTableViewController.java //控制器在那裏我試圖填充表列。

package fxmltableview; 

    import java.net.URL; 
    import java.util.ResourceBundle; 

    import javafx.collections.FXCollections; 
    import javafx.collections.ObservableList; 
    import javafx.fxml.FXML; 
    import javafx.fxml.Initializable; 
    import javafx.scene.control.TableView; 

    public class FXMLTableViewController implements Initializable{ 
     @FXML private TableView<Trade> tableView; 
     ObservableList<Trade> data = FXCollections.observableArrayList(new Trade("1")); 

    @Override 
    public void initialize(URL arg0, ResourceBundle arg1) { 
     tableView.setItems (data); 
    } 
} 

FXMLTableView.java //主要的Java類

package fxmltableview; 

    import javafx.application.Application; 
    import javafx.fxml.FXMLLoader; 
    import javafx.scene.Scene; 
    import javafx.stage.Stage; 

    public class FXMLTableView extends Application { 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     primaryStage.setTitle("FXML TableView Example"); 
     primaryStage.setScene((Scene)FXMLLoader.load(getClass().getResource("fxml_tableview.fxml"))); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

Trade.java //數據模型表

package fxmltableview; 

    import javafx.beans.property.SimpleStringProperty; 

    public class Trade { 

    private SimpleStringProperty tradeId = new SimpleStringProperty(""); 

    public Trade(String tradeId) { 
     setTradeId(tradeId); 
    } 

    public String getTradeId() { 
     return tradeId.get(); 
    } 

    public void setTradeId(String a) { 
     tradeId.set(a); 
    } 
} 

回答

2

快速的猜測是,你忘了設置單元格的值廠的表列。

@FXML private TableColumn<Trade, String> tradeId; 

然後在初始化:

tradeId.setCellValueFactory(new PropertyValueFactory<Trade, String>("tradeId")); 
+0

非常感謝Uluk BIY對你的幫助。有效。 –

+0

可以幫助我解決這個問題http://stackoverflow.com/questions/16463931/javafx-tableview-is-empty? –