JavaFX 2.0 で TableView から選択を取得しようとしています。何が起こるかというと、テーブルビューで選択した行の値を取得する必要があるということです。誰かが私を助けてくれることを願っています
テーブルに置かれるように
つまり、選択したデータを取得したいのですが、イベントを処理して選択した行を自動的に取得する方法があれば
タスクを完了するには、 ChangeListenerとClipboardが必要です:)
コード例:
Clipboard clipboard = Clipboard.getSystemClipboard();
// add listner to your tableview selecteditemproperty
userTable.getSelectionModel().selectedItemProperty().addListener( new ChangeListener() {
// this method will be called whenever user selected row
@override
public void chnaged(ObservableValue observale, Object oldValue,Object newValue) {
UserClass selectedUser = (UserClass)newValue;
ClipboardContent content = new ClipboardContent();
// make sure you override toString in UserClass
content.putString(selectedUser.toString());
clipboard.setContent(content);
}
});
私があなたを正しく理解していれば、TableView 内で現在選択されているセルの行番号を取得したいと考えています。
これを行うには、TableView の SelectionModel を要求します。
// tv is of type TableView
TableView.TableViewSelectionModel selectionModel = tv.getSelectionModel();
ObservableList selectedCells = selectionModel.getSelectedCells();
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
int row = tablePosition.getRow(); // yields the row that the currently selected cell is in
あなたが何をしようとしているのかはまだ私には明らかではありません...
ただし、選択した行を取得する:
final Countries selectedCountry = tblCountries.getSelectionModel().getSelectedItem();
別のペインを表示する必要がある場合、または別のウィンドウを表示する必要がある場合は、イベントハンドラーを onclicked プロパティなどに追加するだけですか?
そういうことですか?
tableview.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observableValue, Object oldValue, Object newValue) {
//Check whether item is selected and set value of selected item to Label
if(tableview.getSelectionModel().getSelectedItem() != null)
{
TableViewSelectionModel selectionModel = tableview.getSelectionModel();
ObservableList selectedCells = selectionModel.getSelectedCells();
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
Object val = tablePosition.getTableColumn().getCellData(newValue);
System.out.println("Selected Value" + val);
}
}
});
このコードを使用すると、JAVAFX TABLEVIEW セルから選択した値を取得できます。
ありがとう..