2017-07-21 3 views
0

Ich programmiere ein 2D-Spiel und frage mich, wie man das hat, wenn jemand die Größe des Fensters ändert, wird es alle Größen ändern, um es gleich zu machen (im Vergleich zur aktuellen Fenstergröße). Zum Beispiel habe ich einen Standard "TILEWIDTH", wie könnte ich es machen, dass wenn jemand das Fenster in der Größe verändert, um es größer zu machen, würde es auch die 'TILEWIDTH' größer machen? Im Moment in meiner Launcher-Klasse (mit der Main-Methode) erstellt es nur eine neue Anzeige mit einer bestimmten Pixel Breite und Höhe (Wenn Sie die Größe des Fensters ändern, erzeugt es nur einen blinkenden schwarzen/grauen Bereich um die Spielanzeige).Java Window - Größenanpassung

Das ist meine Anzeige Klasse (I erstellen Sie eine neue Anzeige im Startklasse im Hauptverfahren):

package me.chickenpillow.game.display; 

import java.awt.Canvas; 
import java.awt.Dimension; 

import javax.swing.JFrame; 

public class Display { 

private JFrame frame; 
private Canvas canvas; 

private String title; 
private int width, height; 

public Display(String title, int width, int height) { 
    this.title = title; 
    this.width = width; 
    this.height = height; 

    createDisplay(); 
} 

private void createDisplay() { 
    frame = new JFrame(title); 
    frame.setSize(width, height); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setResizable(true); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 

    canvas = new Canvas(); 
    canvas.setPreferredSize(new Dimension(width, height)); 
    canvas.setMaximumSize(new Dimension(width, height)); 
    canvas.setMinimumSize(new Dimension(width, height)); 
    canvas.setFocusable(false); 

    frame.add(canvas); 
    frame.pack(); 
} 

public Canvas getCanvas() { 
    return canvas; 
} 

public JFrame getFrame() { 
    return frame; 
} 

}

+0

@ Rosário Pereira Fernandes Ich habe den Beitrag mit dem Code –

Antwort

0

Was würden Sie brauchen, ist ein Hörer die JFrame zu Ändern der Größe. Die Zugabe des Hörers wird in einem anderen Thread erklärt: Listen to JFrame resize events as the user drags their mouse?

Nachdem der Hörer ausgelöst wird, können Sie die neuen Dimensionen des JFrame erhalten und skalieren und nach unten/oben Ihre ‚tileWidth‘ Variable und rufen Sie Ihre paint(...) Methode wieder.

Wenn Sie etwas mehr Code zur Verfügung stellen, könnte ich eine genauere Antwort geben, aber das ist das letzte davon.

UPDATE

Innerhalb Ihrer createDisplay() Methode, nach initialisiert haben und das Setup der frame, könnte man hinzufügen:

frame.addComponentListener(new ComponentAdapter() 
{ 
    public void componentResized(ComponentEvent evt) { 
     Component c = (Component)evt.getSource(); 
     //update your view/canvas 
    } 
}); 

diese spezifische Komponente selbst nicht testen Hat aber das sollten Sie bringen ein langer Weg

+0

bearbeitet Ich habe den Beitrag mit dem Code bearbeitet. –

Verwandte Themen