public void paintComponent(Graphics g) { super.paintComponent(g); if (gameData == null) return; Graphics2D g2d = (Graphics2D) g; AffineTransform previousTransform = g2d.getTransform(); g2d.transform(getVTM()); double visibleWorldY = gameData.getLanderPosition().getY().doubleValue() * 1.33; double zoomFactor = (double) getHeight() / visibleWorldY; if (zoomFactor < 1) { g2d.translate( -(gameData.getLanderPosition().getX().intValue() * zoomFactor - (getWidth() / 2)), 0); g2d.scale(zoomFactor, zoomFactor); } else { g2d.translate(-(gameData.getLanderPosition().getX().intValue() - (getWidth() / 2)), 0); } for (GameObject gameObj : gameData.getGameObjects()) { gameObj.draw(g2d); } currentAT = g2d.getTransform(); g2d.setTransform(previousTransform); if (selecting) { Color save = g.getColor(); g.setColor(Color.yellow); g.drawRect( startScreenPoint.x, startScreenPoint.y, currentScreenPoint.x - startScreenPoint.x, currentScreenPoint.y - startScreenPoint.y); g.setColor(save); } }