button usuwajacy 1 row i wszystkie row

0

Witam mam następującą tabelkę :

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
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.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class Main extends Application {

public static class Person {

    private final StringProperty firstName;
    private final StringProperty lastName;
    

    private Person(String fName, String lName) {
        this.firstName = new SimpleStringProperty(fName);
        this.lastName = new SimpleStringProperty(lName);
       
    }

    public String getFirstName() {
        return firstName.get();
    }

    public void setFirstName(String fName) {
        firstName.set(fName);
    }

    public String getLastName() {
        return lastName.get();
    }

    public void setLastName(String fName) {
        lastName.set(fName);
    }



}
private TableView<Person> table = new TableView<Person>();
private final ObservableList<Person> data = 
    FXCollections.observableArrayList(
        new Person("Jacob", "Smith"),
        new Person("Michael", "Brown")
    );

private HBox hb = new HBox();

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage stage) {
    Scene scene = new Scene(new Group());
    stage.setTitle("Tabela");
    stage.setWidth(400);
    stage.setHeight(500);

    final Label label = new Label("Tabela");
    label.setFont(new Font("Arial", 20));

    TableColumn firstNameCol = new TableColumn("First");
    firstNameCol.setMinWidth(150);
    firstNameCol.setCellValueFactory(
        new PropertyValueFactory<Person,String>("firstName")
    );

    TableColumn lastNameCol = new TableColumn("Last");
    lastNameCol.setMinWidth(200);
    lastNameCol.setCellValueFactory(
        new PropertyValueFactory<Person,String>("lastName")
    );

 

    table.setItems(data);
    table.getColumns().addAll(firstNameCol, lastNameCol);

    final TextField addFirstName = new TextField();
    addFirstName.setPromptText("First Name");
    addFirstName.setMaxWidth(firstNameCol.getPrefWidth());
    final TextField addLastName = new TextField();
    addLastName.setMaxWidth(lastNameCol.getPrefWidth());
    addLastName.setPromptText("Last Name");
 

    final Button addButton = new Button("Add");
    addButton.setOnAction(new EventHandler<ActionEvent>() {
        @Override public void handle(ActionEvent e) {
            data.add(new Person(
                    addFirstName.getText(),
                    addLastName.getText()
                    
                    ));
            addFirstName.setText("");
            addLastName.setText("");
            
        }
    });


    

    hb.getChildren().addAll(addFirstName, addLastName, addButton, delButton, clrButton);
    hb.setSpacing(3);

    final VBox vbox = new VBox();
    vbox.setSpacing(5);
    vbox.getChildren().addAll(label, table, hb);
    vbox.setPadding(new Insets(10, 0, 0, 10));

    ((Group) scene.getRoot()).getChildren().addAll(vbox);

    stage.setScene(scene);
    stage.show();
}

}

i mam w niej button który dodaje imię i nazwisko jako jeden wiersz, a chciałbym też mieć button usuwający wiersz (imię i nazwisko), wszystkie wiersze oraz pobierający ostatni wiersz do pol tekstowych w celu jego edycji, z góry wielkie dzięki za pomoc :)

0

stwórz te buttony i obsłuż identycznie jak w przypadku addButton z tym że zamias metody add użyj remove, clear albo set.

0

ok, mam add, del, delall i quit button tylko chciałbym żeby del usuwał ostatni dodany a nie pierwszy a add blokował dodawanie pustych row

import javafx.application.Application;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
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.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class Main extends Application {

    private IntegerProperty index = new SimpleIntegerProperty();


public final double getIndex() {
    return index.get();
}


public final void setIndex(Integer value) {
    index.set(value);
}


public IntegerProperty indexProperty() {
    return index;
}

public static class Person {

    private final StringProperty firstName;
    private final StringProperty lastName;
    

    private Person(String fName, String lName) {
        this.firstName = new SimpleStringProperty(fName);
        this.lastName = new SimpleStringProperty(lName);
       
    }

    public String getFirstName() {
        return firstName.get();
    }

    public void setFirstName(String fName) {
        firstName.set(fName);
    }

    public String getLastName() {
        return lastName.get();
    }

    public void setLastName(String fName) {
        lastName.set(fName);
    }



}
private TableView<Person> table = new TableView<Person>();
private final ObservableList<Person> data = 
    FXCollections.observableArrayList(
        
    );

private HBox hb = new HBox();

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(final Stage stage) {
    Scene scene = new Scene(new Group());
    stage.setTitle("Tabela");
    stage.setWidth(400);
    stage.setHeight(500);

    final Label label = new Label("Tabela");
    label.setFont(new Font("Arial", 20));

    TableColumn firstNameCol = new TableColumn("First");
    firstNameCol.setMinWidth(150);
    firstNameCol.setCellValueFactory(
        new PropertyValueFactory<Person,String>("firstName")
    );

    TableColumn lastNameCol = new TableColumn("Last");
    lastNameCol.setMinWidth(200);
    lastNameCol.setCellValueFactory(
        new PropertyValueFactory<Person,String>("lastName")
    );

 

    table.setItems(data);
    table.getColumns().addAll(firstNameCol, lastNameCol);

    final TextField addFirstName = new TextField();
    addFirstName.setPromptText("First Name");
    addFirstName.setMaxWidth(firstNameCol.getPrefWidth());
    final TextField addLastName = new TextField();
    addLastName.setMaxWidth(lastNameCol.getPrefWidth());
    addLastName.setPromptText("Last Name");
 

    final Button addButton = new Button("Add");
    addButton.setOnAction(new EventHandler<ActionEvent>() {
        @Override public void handle(ActionEvent e) {
            data.add(new Person(
                    addFirstName.getText(),
                    addLastName.getText()
                    
                    ));
            addFirstName.setText("");
            addLastName.setText("");
            
        }
    });

final Button delButton = new Button("Delete");
delButton.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent e) {

            data.remove(index.get());
            table.getSelectionModel().clearSelection();

        }
    });
    
      final Button delallButton = new Button("Delete all");
    delallButton.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent e) {

            data.clear();
             
        }
    });

    final Button quitButton = new Button("quit");
    quitButton.setOnAction(new EventHandler<ActionEvent>() {

      @Override
             public void handle(ActionEvent e) {
                 stage.close();
             }

        
    });

    hb.getChildren().addAll(addFirstName, addLastName, addButton, delButton, quitButton,delallButton);
    hb.setSpacing(3);

    final VBox vbox = new VBox();
    vbox.setSpacing(5);
    vbox.getChildren().addAll(label, table, hb);
    vbox.setPadding(new Insets(10, 0, 0, 10));

    ((Group) scene.getRoot()).getChildren().addAll(vbox);

    stage.setScene(scene);
    stage.show();
}

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1