2017-05-21 5 views
0

Ich arbeite gerade an meinem JavaFX ZOO Projekt und ich habe ein Problem. Ich zeige alle meine Datensätze in einer TableView und eine der Spalten enthält eine Schaltfläche zum Löschen. Alles funktioniert perfekt, aber ich möchte eine Alarm-Box haben, die nach dem Klicken auf diesen Lösch-Button erscheint, nur aus Sicherheitsgründen.JavaFX Alarmbox auf Knopf klicken

Also meine Schaltfläche Löschen Klasse sieht wie folgt aus:

public class Alertbox {

public static void display(String title, String message){ 

    Stage window = new Stage(); 

    window.initModality(Modality.APPLICATION_MODAL); 
    window.setTitle(title); 
    window.setMinWidth(250); 

    Label label = new Label(); 
    label.setText(message); 
    Button deleteButton = new Button("I'm sure, delete!"); 

    VBox layout = new VBox(10); 
    layout.getChildren().addAll(label,deleteButton); 
    layout.setAlignment(Pos.CENTER); 

    Scene scene = new Scene(layout); 
    window.setScene(scene); 
    window.showAndWait(); 

} 

}

:

private class ButtonCell extends TableCell<Record, Boolean> { 
    final Button cellButton = new Button("Delete"); 

    ButtonCell(){ 

     cellButton.setOnAction(new EventHandler<ActionEvent>(){ 

      @Override 
      public void handle(ActionEvent t) { 

       Animal currentAnimal = (Animal) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); 

       data.remove(currentAnimal); 
      } 
     }); 
    } 

    @Override 
    protected void updateItem(Boolean t, boolean empty) { 
     super.updateItem(t, empty); 
     if(!empty){ 
      setGraphic(cellButton); 
     } 
    } 
} 

Auch meine Alertbox Klasse wie folgt aussieht

Ich möchte dies so machen, nachdem ich auf "Löschen" geklickt habe, die Alarmbox erscheint, um Erlaubnis fragen, und danach wird der Rest des Löschcodes ausgeführt.

Ich dachte auch, Alert anstelle meiner AlertBox-Klasse hinzuzufügen, zB: http://code.makery.ch/blog/javafx-dialogs-official/ (Bestätigungsdialog) aber ich habe keine Ahnung, wie man es implementiert.

Jede Hilfe wäre großartig! Danke :)

Antwort

2

Ich werde Code von der Website ausleihen, die Sie erwähnten.

cellButton.setOnAction(new EventHandler<ActionEvent>(){ 

     @Override 
     public void handle(ActionEvent t){ 

      Alert alert = new Alert(AlertType.CONFIRMATION); 
      alert.setTitle("Confirmation Dialog"); 
      alert.setHeaderText("Look, a Confirmation Dialog"); 
      alert.setContentText("Are you ok with this?"); 

      Optional<ButtonType> result = alert.showAndWait(); 
      if (result.get() == ButtonType.OK){ 
       Animal currentAnimal = (Animal) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); 
       data.remove(currentAnimal); 
      } 
     } 
    }); 
+0

Wow, toller Job! Danke Krämer :) –