Размытые места в TextField - PullRequest
2 голосов
/ 14 июля 2020

Когда я создаю TextField в своем приложении, тогда в нем есть места, где появляется размытие.

Пример: 1. В начале ввода есть размытие:

enter image description here

  1. После нескольких нажатий на Пробел исчезает размытие:

enter image description here

  1. Искажение отображения последнего символа:

введите описание изображения здесь

Затем снова появляется размытие, и это происходит по всему полю. Я не понимаю, почему это происходит, и hox исправить это

Код фрагмента, если это необходимо:

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();


 }

1 Ответ

1 голос
/ 23 июля 2020

я просто пробую код ur локально:

public class test2 extends Application {
@Override
public void start(Stage stage) throws Exception {
    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();

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

ничего плохого с этим кодом, и на моем экране нет артефактов

введите описание изображения здесь

может что-то не так с ur gpu или ur javafx, я использую jdk 14.0.1, javafx 14 с gradle, возможно, вам нужно перейти к последней версии :)

...