0

これは、実際に FXML で列を設計する必要があるということではなく、FXML とコントローラー クラスがどのように相互作用するかを理解することに関するものだと思います。だから私はこのようにFXMLでテーブルを定義しました:

<TableView fx:id="UserList" layoutX="14.0" layoutY="34.0" prefHeight="200.0"     prefWidth="200.0">
  <columns>
    <TableColumn editable="false" prefWidth="75.0" text="Profile" fx:id="ProfileNameColumn" />
  </columns>
</TableView>

getUsers() というメインクラスのメソッドからユーザーの名前を入力したいのですが、これは私が好きです:

    @FXML private TableView<User> UserList;
    @FXML private TableColumn<User, String> ProfileNameColumn;

public void setApp(EncryptSyncGui application){
        this.application = application;
        ObservableList<User> data = FXCollections.observableList(application.getUsers());
       ProfileNameColumn = new TableColumn<User, String>("Profile");
        ProfileNameColumn.setCellValueFactory(new PropertyValueFactory<User, String>("name"));
        UserList.getColumns().add((TableColumn<User, String>) ProfileNameColumn);

        UserList.setItems(data);
    }

ただし、既存の列に fx:ID ProfileNameColumn を入力する代わりに、まったく新しい列を作成します。FXML で列を定義するには、FXML にも入力する必要がありますか? その場合、FXML のメイン クラスからメソッドを呼び出すにはどうすればよいでしょうか。先制感謝。

4

1 に答える 1

0

実際には、新しい列が作成されます - 驚くべきことではありません。

代わりに試してみてください

ProfileNameColumn = new TableColumn<User, String>("Profile");

書きます

ProfileNameColumn = UserList.getColumns().get(0); 

そして取り除く

UserList.getColumns().add((TableColumn<User, String>) ProfileNameColumn);
于 2013-04-27T17:41:02.767 に答える