Сосредоточив внимание на упомянутом артефакте прерывистой визуализации здесь , глиф 2
выглядит так, как будто он был визуализирован дважды, причем одна копия смещена горизонтально относительно другой.Такие явно случайные аномалии, как известно, трудно идентифицировать.Множество причин может включать неправильная синхронизация , неправильная компоновка , дефекты в конвейере рендеринга платформы хоста и т. Д. Для справки приведенный ниже пример может позволить вам проверитьнесопоставимые платформы.
![image](https://i.stack.imgur.com/yXHpo.png)
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
/**
* @see https://stackoverflow.com/a/53989899/230513
*/
public class TextFieldTest extends Application {
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("TextFieldTest");
BorderPane root = new BorderPane();
root.setCenter(createContent());
root.setBottom(createVersion());
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
private Node createContent() {
HBox row1 = new HBox(4);
Label channelsLabel = new Label("Channels:");
TextField channelsText = new TextField("2");
channelsText.setPrefWidth(32);
Label separatorLabel = new Label("Separator:");
TextField separatorText = new TextField("!");
separatorText.setPrefWidth(32);
row1.setPadding(new Insets(8));
row1.getChildren().addAll(
channelsLabel, channelsText, separatorLabel, separatorText);
HBox row2 = new HBox(4, new Label("Label:"), new TextField());
row2.setPadding(new Insets(8));
return new VBox(row1, row2);
}
private Label createVersion() {
Label label = new Label(
System.getProperty("os.name") + " v"
+ System.getProperty("os.version") + "; Java v"
+ System.getProperty("java.version"));
label.setPadding(new Insets(8));
return label;
}
public static void main(String[] args) {
launch(args);
}
}
Как показано в примере Модена , эффект преднамеренного размытия указывает, что текстовое поле имеет значение сфокусировано :
![text fields](https://i.stack.imgur.com/4anQd.png)
Детали, которые вызывают размытый эффект в вашем изображении является составной рамкой, видимой ниже в 2x:
![text field 2x](https://i.stack.imgur.com/Mtttw.png)
Здесь сопоставимые эффекты видны для кнопок (верхний ряд) и кнопок по умолчанию (нижний ряд):
![buttons](https://i.stack.imgur.com/nwAcJ.png)