Skip to content

Instantly share code, notes, and snippets.

@alvareztech
Last active June 8, 2017 15:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alvareztech/0506bbc84f32b6c740e729c2b8b31f64 to your computer and use it in GitHub Desktop.
Save alvareztech/0506bbc84f32b6c740e729c2b8b31f64 to your computer and use it in GitHub Desktop.
JavaFX: TableView, add and delete buttons
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
TableView tableView = new TableView();
TableColumn nombresTableColum = new TableColumn("Nombres");
TableColumn apellidosTableColumn = new TableColumn("Apellidos");
TableColumn correoTableColumn = new TableColumn("Correo");
nombresTableColum.setCellValueFactory(new PropertyValueFactory<>("nombres"));
apellidosTableColumn.setCellValueFactory(new PropertyValueFactory<>("apellidos"));
correoTableColumn.setCellValueFactory(new PropertyValueFactory<>("correo"));
tableView.getColumns().addAll(nombresTableColum, apellidosTableColumn, correoTableColumn);
ObservableList<Persona> personas = FXCollections.observableArrayList();
tableView.setItems(personas);
TextField nombresTextField = new TextField();
TextField apellidosTextField = new TextField();
TextField correoTextField = new TextField();
nombresTextField.setPromptText("Nombres");
apellidosTextField.setPromptText("Apellidos");
correoTextField.setPromptText("Correo");
tableView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
Persona p = (Persona) newValue;
if (p != null) {
nombresTextField.setText(p.getNombres());
apellidosTextField.setText(p.getApellidos());
correoTextField.setText(p.getCorreo());
}
}
});
Button adicionarButton = new Button("Adicionar");
adicionarButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String nombres = nombresTextField.getText();
String apellidos = apellidosTextField.getText();
String correo = correoTextField.getText();
personas.add(new Persona(nombres, apellidos, correo));
nombresTextField.setText(null);
apellidosTextField.setText(null);
correoTextField.setText(null);
}
});
Button eliminarButton = new Button("Eliminar");
eliminarButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Persona p = (Persona) tableView.getSelectionModel().getSelectedItem();
personas.remove(p);
}
});
VBox vBox = new VBox();
vBox.getChildren().addAll(tableView, nombresTextField, apellidosTextField, correoTextField, adicionarButton, eliminarButton);
vBox.setPadding(new Insets(20));
vBox.setSpacing(20);
Scene scene = new Scene(vBox, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
}
public class Persona {
private String nombres;
private String apellidos;
private String correo;
public Persona(String nombres, String apellidos, String correo) {
this.nombres = nombres;
this.apellidos = apellidos;
this.correo = correo;
}
public String getNombres() {
return nombres;
}
public void setNombres(String nombres) {
this.nombres = nombres;
}
public String getApellidos() {
return apellidos;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
public String getCorreo() {
return correo;
}
public void setCorreo(String correo) {
this.correo = correo;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment