JavaFX隐藏id列
我的问题是,我需要用户不能从tableview中的数据库中知道“id_列”,但我需要它能够从所选行中删除/更新car 示例: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 来自数据库的汽车(这里可以有多辆具有相同属性的汽车) 但不允许用户查看该列
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);
});