Ausrichten benutzerdefinierter ButtonTypesJava

Java-Forum
Anonymous
 Ausrichten benutzerdefinierter ButtonTypes

Post by Anonymous »

Wie stelle ich sicher, dass meine benutzerdefinierte Benachrichtigungsschaltfläche neben der Abbrechen-Schaltfläche platziert wird? Ab sofort ist die Schaltfläche „Abbrechen“ nach rechts verschoben, während meine benutzerdefinierte Schaltfläche an einer seltsamen Stelle platziert ist, die weder links, rechts noch in der Mitte ist. Ich möchte, dass sie alle in dieser Reihenfolge rechtsbündig ausgerichtet sind: zuerst meine benutzerdefinierte Schaltfläche, dann die Schaltfläche „Abbrechen“.

Code: Select all

ButtonData.RIGHT
fügt die benutzerdefinierte Schaltfläche anstelle der Abbrechen-Schaltfläche ein. Nicht akzeptabel.
Die benutzerdefinierte Schaltfläche ist semantisch gesehen keine Abbrechen-Schaltfläche, daher ist es auch nicht akzeptabel, ihre ButtonData auf CANCEL_CLOSE zu setzen.
Im weiteren Sinne möchte ich vermeiden, der benutzerdefinierten Schaltfläche nur aus Gründen der Ausrichtung eine falsche Semantik hinzuzufügen (z. B. OK_DONE). OTHER ist für meinen Fall das Beste, was es nur gibt.
MRE:

Code: Select all

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.util.Optional;
import java.util.function.Predicate;

public class FXAlertDemo extends Application {

static final ButtonType REPEAT = new ButtonType("Repeat", ButtonBar.ButtonData.OTHER);

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

@Override
public void start(Stage primaryStage) throws Exception {
Parent root = createRoot();
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}

private Parent createRoot() {
VBox root = new VBox();
root.paddingProperty().set(new Insets(5));
root.getChildren().setAll(createButton());
return root;
}

private Button createButton() {
Button button = new Button();
button.textProperty().set("Perform Flaky Operation");
button.setOnAction(e -> performFlakyOperation());
return button;
}

private void performFlakyOperation() {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setHeaderText("There was an error performing the operation.");
alert.setContentText("Do you want to repeat?");
alert.getButtonTypes().setAll(REPEAT, ButtonType.CANCEL);
Optional buttonTypeOptional = alert.showAndWait();
buttonTypeOptional.filter(Predicate.isEqual(REPEAT)).ifPresent(b -> performFlakyOperation());
}
}
Image
Java 8.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post
  • Text in einem Etikett vertikal ausrichten
    by Guest » » in HTML
    0 Replies
    58 Views
    Last post by Guest
  • Text in Float rechts ausrichten
    by Guest » » in HTML
    0 Replies
    42 Views
    Last post by Guest
  • Text in einem Etikett vertikal ausrichten
    by Guest » » in CSS
    0 Replies
    54 Views
    Last post by Guest
  • Text in Float rechts ausrichten
    by Guest » » in CSS
    0 Replies
    31 Views
    Last post by Guest
  • Ausrichten von Frames in Tkinter Python, (customtkinter)
    by Guest » » in Python
    0 Replies
    46 Views
    Last post by Guest