JavaFX隐藏id列

JavaFX隐藏id列,java,javafx,tableview,Java,Javafx,Tableview,我的问题是,我需要用户不能从tableview中的数据库中知道“id_列”,但我需要它能够从所选行中删除/更新car 示例: 用户在tableview中选择某一行,并按下“删除”按钮。现在我有问题了,因为我需要删除那个id 来自数据库的汽车(这里可以有多辆具有相同属性的汽车) 但不允许用户查看该列 到 有什么想法吗 编辑 import java.net.URL; import java.util.ResourceBundle; import javafx.beans.value.Chang

我的问题是,我需要用户不能从tableview中的数据库中知道“id_列”,但我需要它能够从所选行中删除/更新car

示例:

  • 用户在tableview中选择某一行,并按下“删除”按钮。现在我有问题了,因为我需要删除那个id 来自数据库的汽车(这里可以有多辆具有相同属性的汽车) 但不允许用户查看该列

有什么想法吗

编辑

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");
       }
    }

}
import java.net.URL;
导入java.util.ResourceBundle;
导入javafx.beans.value.ChangeListener;
导入javafx.beans.value.observeValue;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.fxml.fxml;
导入javafx.fxml.Initializable;
导入javafx.scene.control.TableColumn;
导入javafx.scene.control.TableView;
导入javafx.scene.control.cell.PropertyValueFactory;
公共类HomeController实现可初始化{
私立学生studentToDelete=null;
@FXML私有表视图表;
@FXML私有表列id;
@FXML私有表列名;
@FXML私有表列姓氏;
@FXML专用表格;
公共ObservableList=FXCollections.observableArrayList(
新生(1名,“杜帕”,“纳兹维斯科”,32岁),
新生(2名,“afuj”,“纳兹维斯科”,23岁)
);
数据库db=新数据库();
公共ObservableList lista=FXCollections.observableArrayList(db.getAllStudents());
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
id.setCellValueFactory(新属性ValueFactory(“id”);
名称。setCellValueFactory(新属性ValueFactory(“名称”);
姓氏:setCellValueFactory(新财产价值工厂(“姓氏”);
age.setCellValueFactory(新属性ValueFactory(“age”);
表2.集合项目(列表A);
}
@FXML
私有void初始化(){
//侦听选择的更改
table.getSelectionModel().SelectEditeProperty().addListener(新的ChangeListener()){
@凌驾
public void changed(observeValue1)在表控制器类中创建要删除的汽车的引用:

private CarObject carToDelete = null;
2) 将选择侦听器添加到表中,如下所示:

@FXML
private void initialize() {

// Listen for selection changes
yourTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<CarObject>() {

        @Override
        public void changed(ObservableValue<? extends CarObject> observable,
                CarObject oldValue, CarObject newValue)
        {
                 carToDelete = newValue;
        }
    });
}  

您可能希望从问题中删除sqlite标记,因为数据库实现与您的问题不相关。只需删除显示id的列。也不需要使用侦听器将所选值分配给字段。只需在需要时获取它:
table.getSelectionModel().getSelectedItem()
private CarObject carToDelete = null;
@FXML
private void initialize() {

// Listen for selection changes
yourTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<CarObject>() {

        @Override
        public void changed(ObservableValue<? extends CarObject> observable,
                CarObject oldValue, CarObject newValue)
        {
                 carToDelete = newValue;
        }
    });
}  
@FXML
private void deleteClicked () // or whatever your onAction handler is
{
   if (carToDelete != null)
   {
       // get the id from carToDelete and delete it...
   }
}
supp.setOnAction(e-> {

  table.getColums.remove(tableColumn);

});