Выравнивание пользовательских типов кнопокJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Выравнивание пользовательских типов кнопок

Сообщение Anonymous »

Как убедиться, что моя специальная кнопка оповещения расположена рядом с кнопкой отмены? На данный момент кнопка отмены сдвинута вправо, а моя пользовательская кнопка расположена в странном месте, которое не находится ни слева, ни справа, ни в центре. Я хочу, чтобы все они были выровнены по правому краю в следующем порядке: сначала моя пользовательская кнопка, затем кнопка отмены.

Код: Выделить всё

ButtonData.RIGHT
помещает пользовательскую кнопку на место кнопки отмены. Неприемлемо.
Пользовательская кнопка семантически не является кнопкой отмены, поэтому установка для ее ButtonData значения CANCEL_CLOSE также неприемлема.
В более широком смысле, я хочу избежать присоединения какой-либо неправильной семантики к пользовательской кнопке только ради выравнивания (например, OK_DONE). OTHER подходит для моего случая.
MRE:

Код: Выделить всё

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.Locale;
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());
}
}
Изображение
Java 8.

Подробнее здесь: https://stackoverflow.com/questions/798 ... uttontypes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»