我在JLabel中指定html元素的宽度时遇到问题,以为我会在这里跑旗杆,看看是否有人提出建议。
当我使用“ px”单位值指定元素的宽度时,结果尺寸实际上为〜133%,而如果我不使用单位或使用“ pt”,则得到的确切尺寸为指定。
在下面的示例中,如果将“ width:100px”更改为“ width:100pt”,则会得到正确的尺寸。
这个答案https://stackoverflow.com/a/6257861/131795似乎与之相关,并且72 dpi的调整似乎与我在示例中看到的不匹配相符。
我可能在这里反对古老的代码,但是为什么要转换绝对px值而将pt值视为绝对值呢?
T
答案 0 :(得分:0)
好吧,我想我已经找到了Java缩放像素值的“原因”(或罪魁祸首)。
在HTMLEditorKit实现中,有一个CSS类用于处理CSS内容。它具有一个表格,其中包含每个受支持单位的缩放比例值。 (从CSS.class的2843行开始)
对于“ pt”,它是一对一映射。对于“ px”,其1到1.3映射。 甚至有一条评论说:
//不确定约1.3,由实验决定。
实际上有两个映射表,如果打开了w3c模式,则使用第二个映射表。它具有从第一张表向后的缩放模式:
对于“ pt”,它是1屏/ 72dpi。对于“ px”,其1对1映射。
我不确定是什么激活了w3c模式,但是请注意该问题。