import [Link].
Application;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
/**
* Author : Abhinay_Agarwal
*/
public class TableViewDeleteSample extends Application {
private TableView<Person> tableView = new TableView<Person>();
private final ObservableList<Person> data =
[Link](
new Person("Eliza", "Smith", "[Link]@[Link]"),
new Person("Isabella", "Johnson", "[Link]@[Link]"),
new Person("Imran", "Williams", "[Link]@[Link]"),
new Person("Emma", "Jones", "[Link]@[Link]"),
new Person("Russel", "Peters", "[Link]@[Link]"));
public static class Person {
private final SimpleStringProperty firstName;
private final SimpleStringProperty lastName;
private final SimpleStringProperty email;
private Person(String fName, String lName, String email) {
[Link] = new SimpleStringProperty(fName);
[Link] = new SimpleStringProperty(lName);
[Link] = new SimpleStringProperty(email);
}
public String getFirstName() {
return [Link]();
}
public void setFirstName(String fName) {
[Link](fName);
}
public String getLastName() {
return [Link]();
}
public void setLastName(String fName) {
[Link](fName);
}
public String getEmail() {
return [Link]();
}
public void setEmail(String fName) {
[Link](fName);
}
}
@SuppressWarnings("unchecked")
@Override
public void start(Stage primaryStage) {
[Link]("Table With Delete Row");
[Link](false);
TableColumn<Person, String> firstName = new TableColumn<Person,
String>("First Name");
TableColumn<Person, String> lastName = new TableColumn<Person,
String>("Last Name");
TableColumn<Person, String> email = new TableColumn<Person,
String>("Email");
[Link](new PropertyValueFactory<Person,
String>("firstName"));
[Link](new PropertyValueFactory<Person,
String>("lastName"));
[Link](new PropertyValueFactory<Person,
String>("email"));
[Link]().add(firstName);
[Link]().add(lastName);
[Link]().add(email);
//Insert Button
TableColumn col_action = new TableColumn<>("Action");
[Link]().add(col_action);
col_action.setCellValueFactory(
new Callback<[Link]<Record, Boolean>,
ObservableValue<Boolean>>() {
@Override
public ObservableValue<Boolean>
call([Link]<Record, Boolean> p) {
return new SimpleBooleanProperty([Link]() != null);
}
});
//Adding the Button to the cell
col_action.setCellFactory(
new Callback<TableColumn<Record, Boolean>, TableCell<Record,
Boolean>>() {
@Override
public TableCell<Record, Boolean> call(TableColumn<Record, Boolean> p)
{
return new ButtonCell();
}
});
[Link](data);
VBox vBox = new VBox();
[Link]().addAll(tableView);
[Link](new Scene(vBox, 440, 400));
[Link]();
}
public static void main(String[] args) {
launch(args);
}
//Define the button cell
private class ButtonCell extends TableCell<Record, Boolean> {
final Button cellButton = new Button("Delete");
ButtonCell(){
//Action when the button is pressed
[Link](new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent t) {
// get Selected Item
Person currentPerson = (Person)
[Link]().getItems().get([Link]());
//remove selected item from the table list
[Link](currentPerson);
}
});
}
//Display button if the row is not empty
@Override
protected void updateItem(Boolean t, boolean empty) {
[Link](t, empty);
if(!empty){
setGraphic(cellButton);
}
}
}
}