HTML-рендеринг Java "pt" против размеров "px" - PullRequest
1 голос
/ 30 мая 2019

Я столкнулся с проблемой, связанной с указанием ширины html-элемента в JLabel, и подумал, что я бы запустил его на флагштоке и посмотрел, есть ли у кого-нибудь совет.

Когда я указываю ширину элементаиспользуя значение единицы измерения «px», результирующий размер фактически равен ~ 133%, тогда как, если я не использую единицу измерения или не использую «pt», я получу точный размер, который я указал.

В приведенном нижеНапример, если вы измените «width: 100px» на «width: 100pt», вы получите правильный размер.

Этот ответ https://stackoverflow.com/a/6257861/131795 кажется связанным, а регулировка 72 dpi -чтобы соответствовать несоответствию, которое я вижу в моем примере.

Возможно, я бушую против древнего фрагмента кода, но почему преобразуется абсолютное значение px, а значение pt рассматривается как абсолютное?

public class test {
    public static void main(String args[]) {
        JFrame frame = new JFrame();

        JLabel label = new JLabel("<html><div style='width: 100px; background-color: red;'>test</div>");
        frame.getContentPane().add(label);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 200);
        frame.setVisible(true);
    }
}

1 Ответ

0 голосов
/ 30 мая 2019

Хорошо, я думаю, что нашел «причину» (или виновника) для значений пикселей масштабирования Java.

В реализации HTMLEditorKit есть класс CSS, который обрабатывает CSS. Он имеет таблицу со значениями масштабирования для каждого поддерживаемого устройства. (начиная с строки 2843 в CSS.class)

Для "pt" это отображение 1-к-1. Для «px» - это отображение от 1 до 1,3. Есть даже комментарий, который гласит:

// Не уверен насчет 1,3, определяется экспериментально.

На самом деле есть две таблицы сопоставлений, где вторая используется, если включен режим w3c. Имеются режимы масштабирования, обратные первой таблице:

Для «pt» это 1 к экрану / 72 точек на дюйм. Для «px» - отображение «1 к 1».

Я не уверен, что активирует режим w3c, но остерегайтесь этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...