0

JavaFXのtableViewでクリックされたレコードに基づいてテキストフィールドにデータを入力する方法はありますか?
テーブルビューでクリックしたレコードをテキストフィールドに表示したい。
私に役立つ提案はありますか?

4

2 に答える 2

2

ここにあなたのためのコードサンプルがあります、

yourTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<T>() {
   @Override
   public void changed(ObservableValue<? extends T> ov, T t, T t1) {
      System.out.println(table.getSelectionModel().getSelectedItem());
      //Code to populate your popup/window.
   }
});
于 2013-07-03T04:12:10.483 に答える
0

アクティブなリスナーをテーブル ビューに追加し、それが何をすべきかを制御するメソッドを追加する必要があります。

したがって、FXML ファイルでは、マウス クリック イベントに「clickMe」というメソッド名を割り当てるテーブルビューを作成します。

<TableView fx:id="someTable" layoutX="322.0" layoutY="73.0" onMouseClicked="#clickMe">
        <columns>
        <TableColumn fx:id="someColumn1" text="someValue1" />
        <TableColumn fx:id="someColumn2" text="someValue2" />
        <TableColumn fx:id="someColumn3" text="someValue3" />
        </columns>
</TableView>

次にコントローラーで、テーブルビューとフィールドを上部に追加し、次に clickMe メソッドを追加する必要があります。既に列を追加しており、セル ファクトリを使用して列を設定していると仮定します。

package YourPackage;

public class YourFXMLController{
@FXML private TableView<objectTheTableIsPopulatedWith> someTable; //make sure the name 
// on the tableview and columns match your fx:id
@FXML private TableColumn someColumn1;
@FXML private TableColumn someColumn2;
@FXML private TableColumn someColumn3;
@FXML private TextField someField1;
@FXML private TextField someField2;
@FXML private TextField someField3;

//next add the clickMe method
public void clickMe(MouseEvent event) {
if (event.getClickCount() == 1) //Check for a click, change to 2 for double click
    {
someField1.setText(someTable.getSelectionModel().getSelectedItem().getSomeString1());
someField2.setText(someTable.getSelectionModel().getSelectedItem().getSomeString2());
someField3.setText(someTable.getSelectionModel().getSelectedItem().getSomeString3());
    }
}
}

これはすべて、コンストラクター、セッター、およびゲッターを使用して、オブジェクト クラスによって構築されている監視可能なリストを既に作成している場合に限ります。したがって、getSomeString1() メソッドは、テーブル ビューの値を設定するために使用した getter と同じになります。

于 2021-03-17T21:05:59.947 に答える