JavaFX 8 интервал не масштабируется на окнах

1

Код, показанный ниже, добавляет пару кнопок в HBox. Интервал HBox установлен в 10 (что, я полагаю, означает пиксели, но Java-документ фактически не говорит об этом).

В Windows 7 размер моего текста равен 100% (по умолчанию). Глядя на приложение, между кнопками есть 10-пиксельный промежуток, что и есть.

Теперь я меняю настройки в Windows 7, поэтому размер моего текста составляет 150% (самый высокий доступный мне) и снова запускает программу. Шрифт увеличился в размерах, и кнопки, похоже, хорошо масштабируются, но разрыв остается на 10 пикселей. Я снял скриншоты в обоих случаях, которые можно увидеть здесь:

http://i.imgur.com/uaWO0ju.png

Я ожидаю, что разрыв увеличится до 15 пикселей.

Также обратите внимание, что сцена имеет ту же проблему. Он был определен как 500 на 500, но имеет одинаковый размер в обоих случаях.

Документация по всему этому очень ограничена, но из того, что я прочитал, я знал, что это не работает со старыми версиями JavaFX, но теперь, когда я использую последнее обновление JDK 8 20, я думал, что это будет "исправлено" ( если это действительно ожидаемое поведение). Я знаю, что я могу создать интервал с em в файле css, а затем размер будет увеличиваться с размером текста по умолчанию, но я просто предположил, что пиксели будут масштабироваться.

Означает ли это, что на экране сетчатки (на mac book pro) разрыв будет оставаться в 10 пикселей, а не 2x (т.е. 20 пикселей)? У меня нет ничего подходящего для тестирования.

Пожалуйста, кто-нибудь может объяснить, все ли это предназначено для работы и просто сломан, или он никогда не предназначен для работы таким образом, и поэтому мне придется определить все это в единицах em.

Может ли кто-нибудь с macbook pro опубликовать снимок этого режима в режиме 2x?

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class JavaFXDPITest extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        BorderPane pane = new BorderPane();
        Scene scene = new Scene(pane, 500, 500);
        primaryStage.setScene(scene);

        HBox buttons = new HBox(10.0);
        Button button1 = new Button("Button 1");
        Button button2 = new Button("Button 2");
        buttons.getChildren().addAll(button1, button2);

        pane.setCenter(buttons);
        pane.setRight(new Button("Focus Button"));
        primaryStage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
}    
Теги:
javafx-8

1 ответ

0
Лучший ответ

На это полностью ответил https://stackoverflow.com/users/1155209/jewelsea:

Поддержка JavaFX 8 HiDPI

В основном пиксели будут удвоены на OSX, поскольку JavaFX является hidpi в этой системе. Любая другая система, которую вы используете (Windows, Linux), не столь ясна, что произойдет, и из вышеизложенного вопроса, конечно же, Windows 7 пока не дает соответствующего поведения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню