Я использую OpenJDK 11:
версия openjdk "11.0.1" 2018-10-16
Среда выполнения OpenJDK 18.9 (сборка 11.0.1 + 13)
64-битная версия OpenJDKВиртуальная машина сервера 18.9 (сборка 11.0.1 + 13, смешанный режим)
Пытаясь заставить приложение рисовать что-то в JPanel, я заметил некоторые досадные неточности.
Предполагается, что следующий фрагмент кода должен рисоватьсерия линий одна под другой (меняются цвета, чтобы продемонстрировать, что происходит):
class TestPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.WHITE);
g.setColor(Color.RED);
g.drawLine(301, 1, 350, 1);
g.setColor(Color.BLUE);
g.drawLine(301, 2, 350, 2);
g.setColor(Color.GREEN);
g.drawLine(301, 3, 350, 3);
g.setColor(Color.RED);
g.drawLine(301, 4, 350, 4);
g.setColor(Color.BLUE);
g.drawLine(301, 5, 350, 5);
g.setColor(Color.GREEN);
g.drawLine(301, 6, 350, 6);
g.setColor(Color.RED);
g.drawLine(301, 7, 350, 7);
g.setColor(Color.BLUE);
g.drawLine(301, 8, 350, 8);
g.setColor(Color.GREEN);
g.drawLine(301, 9, 350, 9);
g.setColor(Color.RED);
g.drawLine(301, 10, 350, 10);
}
}
Однако вместо прорисовки линий одна под другой между некоторыми линиями есть промежутки:
Я полагаю, это может быть вызвано чем-то вроде преобразования между виртуальной и физической системами координат.
Однако как сделать его идеальным для пикселей, когда точность действительно имеет значение?