javaFX用表绑定ObservableList

时间:2014-02-20 14:47:11

标签: java javafx scenebuilder

我有一些麻烦将dsata绑定到我的Tabl; e在JavaFX>

我有我的模特 Conductor.java

package model;
公共级指挥{

private Integer mID;

private String mNombre;

private String mNIF;

private String mAutonomo;

private String mEmpresa;

private String mCIF;

public Conductor(){}

public Conductor(String nombre, String NIF, String autonomo,
        String empresa, String CIF) {
    super();
    this.mNombre = nombre;
    this.mNIF = NIF;
    this.mAutonomo = autonomo;
    this.mEmpresa = empresa;
    this.mCIF = CIF;
}

public Conductor(Integer ID,String nombre, String NIF, String autonomo,
        String empresa, String CIF) {
    this.mID = ID;
    this.mNombre = nombre;
    this.mNIF = NIF;
    this.mAutonomo = autonomo;
    this.mEmpresa = empresa;
    this.mCIF = CIF;
}


public Integer getmID() {
    return mID;
}

public void setmID(Integer mID) {
    this.mID = mID;
}

public String getmNombre() {
    return mNombre;
}

public void setmNombre(String mNombre) {
    this.mNombre = mNombre;
}

public String getmNIF() {
    return mNIF;
}

public void setmNIF(String mNIF) {
    this.mNIF = mNIF;
}

public String getmAutonomo() {
    return mAutonomo;
}

public void setmAutonomo(String mAutonomo) {
    this.mAutonomo = mAutonomo;
}

public String getmEmpresa() {
    return mEmpresa;
}

public void setmEmpresa(String mEmpresa) {
    this.mEmpresa = mEmpresa;
}

public String getmCIF() {
    return mCIF;
}

public void setmCIF(String mCIF) {
    this.mCIF = mCIF;
}

@Override
public String toString() {
    return "Conductor [mID=" + mID + ", mNombre=" + mNombre + ", mNIF="
            + mNIF + ", mAutonomo=" + mAutonomo + ", mEmpresa=" + mEmpresa
            + ", mCIF=" + mCIF + "]";
}

}

和我的布局文件> SituacionView.fxml

<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane prefHeight="700.0" prefWidth="1000.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="controller.SituacionController">
  <!-- TODO Add Nodes -->
  <left>
    <VBox prefHeight="1000.0" prefWidth="200.0">
      <children>
        <Label text="Conductores" />
        <TableView fx:id="conductorTable" prefHeight="200.0" prefWidth="200.0">
          <columns>
            <TableColumn editable="false" id="nombreConductorColumn" maxWidth="5000.0" minWidth="10.0" prefWidth="200.0" text="Nombre" fx:id="nombreConductorColumn" />
          </columns>
        </TableView>
        <Label fx:id="labb" text="Label" />
      </children>
    </VBox>
  </left>
</BorderPane>

和我的控制器clas

public class SituacionController {

    @FXML
    private BorderPane mSituaciónBorderPane;

    //Parte Izquierda
    @FXML
    private TableView<Conductor> conductorTable;

    @FXML
    private TableColumn<Conductor, String> nombreConductorColumn;

    @FXML
    Label labb;

    @FXML
    private TableView<Orden> ordenesAsignadasSituacionTableView;

    /**
     * Lista Observable de conductores para la table
     */
    private ObservableList<Conductor> conductorObservableList = FXCollections.observableArrayList();


    @FXML
    private void initialize() {
        labb.setText("sadfa");

        nombreConductorColumn.setCellValueFactory(new PropertyValueFactory<Conductor, String>("mNombre"));

        conductorObservableList.add(new Conductor("AA", "AA", "AA", "AA", "AA"));

        conductorTable.setItems(conductorObservableList);

    }
}

enter image description here

我做错了什么???

感谢很多!!!!!抱歉我的英语!

1 个答案:

答案 0 :(得分:1)

您需要使用属性才能拥有绑定。你必须把你的男女同校变成这样的东西;

private StringProperty mNombre;

public Conductor(String nombre, String NIF, String autonomo,
        String empresa, String CIF) {
    mNombre = new SimpleStringProperty(nombre);

如果您不想要属性,则必须编写自定义单元工厂

  

上面显示的代码是创建a的最短代码   使用JavaFX属性设计域对象时的TableView   记住(另外,PropertyValueFactory支持普通的JavaBean   属性也是如此,虽然有一点需要注意,所以请参考   类文档以获取更多信息)。如果不是这样,   有必要提供自定义单元值工厂。   http://docs.oracle.com/javafx/2/api/javafx/scene/control/TableView.html

请注意,示例代码对您无效,因为您没有获取mNombre的公共方法。如果你想使用POJO,你至少需要一个吸气剂和固定剂,即。 public String getMNombre(){return mNombre;}