1

別々の (ネストされていない) 2 つの列を持つ TableView がある場合、それらを再配置しようとするとすべて問題ありません。ただし、ネストされた列が 1 つでも存在する場合、何かを再配置しようとするとクラッシュします。

ここに私のxmlがあります:

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

<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="application.RecordsCtrl">
  <!-- TODO Add Nodes -->
  <children>
    <VBox id="VBox" alignment="CENTER" spacing="0.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
      <children>
        <TableView fx:id="table" editable="true" prefHeight="-1.0" prefWidth="-1.0">
          <columns>
            <TableColumn prefWidth="75.0" text="Column X">
              <columns>
                <TableColumn prefWidth="75.0" text="Name" fx:id="nameCol" />
                <TableColumn prefWidth="75.0" text="Age" fx:id="ageCol" />
              </columns>
            </TableColumn>
          </columns>
        </TableView>
        <Button mnemonicParsing="false" onAction="#editPerson" text="Edit" />
      </children>
    </VBox>
  </children>
</AnchorPane>

そして、テーブルビューを設定するためにコントローラークラスから使用しているものは次のとおりです。

@Override
   public void initialize(URL location, ResourceBundle resources) {
      obsList = FXCollections.observableArrayList();
      table.setItems(obsList);
      obsList.add(new Person("Riley", 40));
      obsList.add(new Person("Alex", 20));
      obsList.add(new Person("Jack", 30));
      nameCol.setCellValueFactory(new PropertyValueFactory<Person, String>(
            "name"));
      ageCol.setCellValueFactory(new PropertyValueFactory<Person, Integer>(
            "age"));
      nameCol.setCellFactory(TextFieldTableCell.<Person>forTableColumn());
      nameCol
            .setOnEditCommit(new EventHandler<CellEditEvent<Person, String>>() {

               @Override
               public void handle(CellEditEvent<Person, String> t) {
                  ((Person) t.getTableView().getItems()
                        .get(t.getTablePosition().getRow())).setName(t
                        .getNewValue());
               }
            });
   }

これを修正する方法を知っている人はいますか?列の再配置は必須であり、この障害を乗り越える必要があります。どんな助けでも大歓迎です!

4

0 に答える 0