Различные результаты при запуске Java-кода AWT в Windows и Linux - PullRequest
2 голосов
/ 31 января 2012

У меня есть некоторый код (к сожалению, не написанный мной, иначе я бы знал, с чего начать поиск решений), который рисует некоторые линейные графики. Когда я запускаю код на своей машине с Windows и на машине с Linux, я получаю разные результаты: на машине с Linux граница вокруг легенды рисуется с меньшей высотой, что приводит к некоторым ужасным проблемам, когда в легенда.

Есть ли известная разница при использовании

int getHeight(Graphics2D g, String text) {
    Rectangle2D bounds = g.getFont().getStringBounds(text, g.getFontMetrics().getFontRenderContext());
    return bounds.getHeight();
}

или где может быть проблема?

Windows

C:\>java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

Linux:

$ java -version
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.10) (6b20-1.9.10-0ubuntu1~10.04.3)
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode)

UPDATE:

Это была ошибка округления, которая, по-видимому, возникала только со шрифтами Linux, а не с Windows. Странно.

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Ваш метод основан на getFontMetrics(), который возвращает метрику текущего шрифта. Я предполагаю, что вы используете шрифт по умолчанию в вашей программе, и они отличаются в разных ОС, поэтому высота результата может отличаться.

1 голос
/ 31 января 2012

Вы используете разные реализации Java, и такого рода вещи ожидаются.Я рекомендую вам удалить OpenJDK и установить Oracle Java в Linux.

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