문제

I can't load data into table. I have class Player with name, lastName, etc. I want to insert name, lastname into table player over textfield.

public class CoreAppFXMLController implements Initializable {

@FXML
private Button addBtn;
@FXML
private Button deleteBtn;
@FXML
private Tab playersTab;
@FXML
private Tab coachesTab;
@FXML
private TextField playerNameFld;
@FXML
private TextField playerLNFld;
@FXML
private TextField playerNumberFld;
@FXML
private TextField playerPointsFld;
@FXML
private ChoiceBox<String> positionCb;
@FXML
private TableColumn<Player, String> playerNameCol;
@FXML
private TableColumn<Player, String> playerLNCol;
@FXML
private TableColumn<Player, String> playerNumberCol;
@FXML
private TableColumn<Player, String> playerPointsCol;
@FXML
private TableView<Player> playerTable;

ObservableList<Player> data = FXCollections.observableArrayList();

public class Player {

    private String name;
    private String lastName;
    private String number;
    private String points;

    public Player(String name, String lastName, String number, String points) {
        this.name = name;
        this.lastName = lastName;
        this.number = number;
        this.points = points;

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getPoints() {
        return points;
    }

    public void setPoints(String points) {
        this.points = points;
    }

}

/**
 * Initializes the controller class.
 */
public void initialize(URL url, ResourceBundle rb) {

    positionCb.setItems(FXCollections.observableArrayList("PLAYMAKER",
            "SHOOTER", "WING", "CENTER", "CENTER-WING"));

    playerNameCol
            .setCellValueFactory(new PropertyValueFactory<Player, String>(
                    "name"));
    playerLNCol
            .setCellValueFactory(new PropertyValueFactory<Player, String>(
                    "lastName"));
    playerNumberCol
            .setCellValueFactory(new PropertyValueFactory<Player, String>(
                    "number"));
    playerPointsCol
            .setCellValueFactory(new PropertyValueFactory<Player, String>(
                    "points"));

    playerTable.setItems(data);

}

public void addBtnAction(ActionEvent event) {
    data.add(new Player(playerNameFld.getText(), playerLNFld.getText(),
            playerNumberFld.getText(), playerPointsFld.getText()));
    playerNameFld.clear();
    playerLNFld.clear();
    playerNumberFld.clear();
    playerPointsFld.clear();

}

public void deleteBtnAction(ActionEvent event) {

}

}

I am doing exactly same thing as shown here: http://docs.oracle.com/javase/8/javafx/user-interface-tutorial/table-view.htm#CJAGAAEE

But I can't get it to work. Can anyone help me?

도움이 되었습니까?

해결책

It's not exactly the same as the example and if you're using Java 7, then it might not work the same regardless. Try setting up your Player class to use SimpleStringProperty for the member variables and then add a *Property() method for each of them that returns the member. For example:

public class Player
{
    private SimpleStringProperty name;

    public Player(String name)
    {
        this.name.set(name);
    }

    public SimpleStringProperty nameProperty() { return name; }
    public String getName() { return name.get(); }
    public void setName(String name) { this.name.set(name); }
}

Try that and add in the rest of your members the same way.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top