Stack Overflow на русском Asked by Denis Kukharenko on August 30, 2021
При создании окна в котором ввожу название сохранения столкнулся с проблемой.
Вводимый внутри TextField текст становится немного размытым, раздражающим глаз. Помимо этого явно заметно как в некоторых областях поля ввода столбец указывающий текущее положение размыт, а в некоторых четкий – такой каким должен быть.
UPD: Это видимо как-то касается моего JavaFX в целом. Суть в том что пытаясь исправить это в Scene Builder заметил что в полях ввода самого билдера (например при поиске нужного компонента) происходит то же самое размытие что и в моих примерах. Проверил в swing
с JTextField
и там подобных проблем нет.
Скриншоты для примера:
Это возможно исправить?
Код всего фрагмента, на всякий случай:
private void inputSaveName() {
Stage nameStage = new Stage();
nameStage.initModality(Modality.WINDOW_MODAL);
nameStage.initOwner(saveStage);
nameStage.initStyle(StageStyle.UNDECORATED);
nameStage.initStyle(StageStyle.TRANSPARENT);
BorderPane saveBorder = new BorderPane();
saveBorder.setStyle("-fx-background-color:saddlebrown;" +"-fx-border-width:5;" + "-fx-border-radius:16;" + "-fx-font-family: Cambria;" + "-fx-border-color:olive");
Scene nameScene = new Scene (saveBorder,300,120);
nameScene.setFill(Color.TRANSPARENT);
Rectangle rect = new Rectangle(300,120);
rect.setArcHeight(40.0);
rect.setArcWidth(40.0);
saveBorder.setClip(rect);
Button acceptNameButton = new Button("Accept");
Button cancelNameButton = new Button("Cancel");
acceptNameButton.setStyle("-fx-background-color: darkkhaki;" + "-fx-background-insets: 0 2 2 0;" + "-fx-padding: 8;" + "-fx-font-size:15;" + "-fx-text-alignment:
center");
cancelNameButton.setStyle("-fx-background-color: darkkhaki;" + "-fx-background-insets: 0 0 2 2;" + "-fx-padding: 8;" + "-fx-font-size:15;" + "-fx-text-alignment:
center");
cancelNameButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent ae) {
nameStage.close();
}
});
TextField nameField = new TextField();
nameField.setPromptText("Write save name");
nameField.setFont(new Font(18));
HBox buttonBox = new HBox();
buttonBox.setAlignment(Pos.CENTER);
buttonBox.setHgrow(acceptNameButton, Priority.ALWAYS);
buttonBox.setHgrow(cancelNameButton, Priority.ALWAYS);
acceptNameButton.setMaxWidth(130);
cancelNameButton.setMaxWidth(130);
buttonBox.getChildren().addAll(acceptNameButton,cancelNameButton);
saveBorder.setBottom(buttonBox);
saveBorder.setCenter(nameField);
nameStage.setScene(nameScene);
nameStage.show();
}
На вкладке Layout есть два параметра (Layout X, Layout Y) если там стоит 9,8999999 или что то подобное, нужно выставить в 0 через SceneBuilder или в можно через .fxml. Мне помогло, возможно поможет.
Answered by EugeneTM on August 30, 2021
Если в Java существует что-то подобное, то можно попробовать отключить визуализацию Anti-Aliasing и SubPixel:
SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
(P.s. Я не знаю Java и Javafx, но я сталкивался с похожим вопросом в WPF, поэтому решил написать. Если я категорически не прав я удалю ответ сразу после того как меня поправят)
Answered by Nik4ant on August 30, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP