1
私の問題は、ユーザがtableviewのデータベースから「id_column」を知ることができないことですが、選択した行から車を削除/更新できるようにする必要があります。JavaFX hide idカラム
例:
- ユーザーは、テーブルビューとプッシュ "delete_button" に車でいくつかの行を選択しています。今私はIDを 車からデータベース(ここで同じ属性を持つ複数の車にすることができます)を削除する必要があるので、問題がある しかし、ユーザーはその列を表示することはできません。
id || name || cost
1 car1 34.30
2 car1 34.30
3 car2 34.30
4 car3 55.00
name || cost
car1 34.30
car1 34.30
car2 34.30
car3 55.00
に任意のアイデア?
EDIT
import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
public class HomeController implements Initializable {
private Student studentToDelete = null;
@FXML private TableView<Student> table;
@FXML private TableColumn<Student, Integer> id;
@FXML private TableColumn<Student, String> name;
@FXML private TableColumn<Student, String> surname;
@FXML private TableColumn<Student, Integer> age;
public ObservableList<Student> list = FXCollections.observableArrayList(
new Student(1,"dupa","nazwisko",32),
new Student(2,"afuj","nazwisko",23)
);
DataBase db = new DataBase();
public ObservableList<Student> lista = FXCollections.observableArrayList(db.getAllStudents());
@Override
public void initialize(URL location, ResourceBundle resources) {
id.setCellValueFactory(new PropertyValueFactory<Student, Integer>("id"));
name.setCellValueFactory(new PropertyValueFactory<Student, String>("name"));
surname.setCellValueFactory(new PropertyValueFactory<Student, String>("surname"));
age.setCellValueFactory(new PropertyValueFactory<Student, Integer>("age"));
table.setItems(lista);
}
@FXML
private void initialize() {
// Listen for selection changes
table.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Student>() {
@Override
public void changed(ObservableValue<? extends Student> observable, Student oldValue, Student newValue) {
studentToDelete = newValue;
}
});
}
@FXML
private void deleteClicked() // or whatever your onAction handler is
{
if (studentToDelete != null)
{
System.out.println("test");
}
}
}
今では、次のようになりますか?
データベース実装があなたの質問に関連していないので、あなたの質問からsqliteタグを削除したいかもしれません。 –
idを表示している列を削除するだけです。また、リスナを使用して選択した値をフィールドに割り当てる必要はありません。必要なときに取得してください: 'table.getSelectionModel()。getSelectedItem()' – fabian