Код: Выделить всё
static public void main(String[] args) {
JFrame f = new JFrame();
JPanel p = new JPanel() {
private static final long serialVersionUID = 1L;
@Override public void paintComponent(Graphics g1) {
Graphics2D g = (Graphics2D)g1;
g.drawString(" XX-XXXX-XX ", 0 , 16 );
g.drawString(" XX-XXXX-XX ", 50 , 1179664);
}
};
p.setPreferredSize(new Dimension(120, 120));
f.getContentPane().add(p, BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
Код: Выделить всё
yоба значения 16 и 1179664 , где выбираются, чтобы оба текста идеально совпадают, чтобы доказать, что положение одинакова. rendered at position 16:

But on Windows with OpenJDK 18 and Oracle JDK 8 это правильно (то есть не отображается, потому что очень много за пределами отображаемой области):
. sun.java2d.xr.xrbackendnative.xrendercompositeTextNative () , где srcy имеет правильное значение, но он интерпретируется неправильно: 1179664-0x12_0010 , что действительно 16 , когда Truncation Not Infactionation, не упомянутая, не указана, не является указанием. Похоже, это ошибка в JVM Linux (или, по крайней мере, несоответствие с версией Windows), поэтому я должен сообщить об этом или есть обходной путь, который я должен использовать (кроме очевидного теста координат)?
Подробнее здесь: https://stackoverflow.com/questions/730 ... -linux-jvm