Keller-Dev Docs · Java & Hytale

Java Core

Dynamische Fenstergröße basierend auf TileMap-Dimensionen

Anstatt feste Fenstergrößen (wie 800x600) zu verwenden, sollte sich die Dimension des Canvas (JPanel) dynamisch aus den Kartendaten berechnen. Dadurch wird vermieden, dass ungenutzter schwarzer Rand entsteht. Ablauf: TileMap laden und Dimensionen bestimmen (breite * TILE_SIZE, hoehe * TILE_SIZE). setPreferredSize(...) auf dem Panel setzen. frame.pack() aufrufen, damit der JFrame die Insets (Titelleiste, Rahmen) automatisch berechnet und exakt um das Panel schließt.

Referenz: Datei 1. Spielprojekt · Klasse GameWindow.GamePanel
// Berechnung der bevorzugten Größe aus den Kartendaten
if (tileMap != null) {
    int pixelWidth = tileMap.getWidthInTiles() * TileMap.TILE_SIZE;
    int pixelHeight = tileMap.getHeightInTiles() * TileMap.TILE_SIZE;
    setPreferredSize(new Dimension(pixelWidth, pixelHeight));
    player = new Player(pixelWidth / 2.0 - 16, pixelHeight / 2.0 - 16);
} else {
    // Fallback auf Standardgröße
    setPreferredSize(new Dimension(800, 600));
    player = new Player(400 - 16, 300 - 16);
}
#swing #tilemap #window-size #pack #layout
Bearbeiten