In Ihrer Anwendung stoßen Sie auf ein Problem, bei dem Sie von einem separaten auf die Breite und Höhe eines JPanels zugreifen müssen Klasse (Rect). JPanel bietet Methoden zum Abrufen seiner Dimensionen, aber sie geben 0 zurück, wenn sie außerhalb der Klasse aufgerufen werden.
Eine Lösung besteht darin, die JPanel-Instanz als Parameter für die Verschiebung zu übergeben ()-Methode in der Rect-Klasse. Dies ermöglicht den Zugriff auf die Dimensionen des JPanels:
public class Rect { //... properties public void move(JPanel panel) { int jpWidth = panel.getWidth(); int jpHeight = panel.getHeight(); // rest of the movement logic using jpWidth and jpHeight } }
Ein anderer Ansatz besteht darin, das Dimension-Objekt des JPanels abzurufen und es an die move()-Methode zu übergeben:
public void move(Dimension dimension) { int jpWidth = dimension.width; int jpHeight = dimension.height; // rest of the movement logic using jpWidth and jpHeight }
Innerhalb der GamePanel-Klasse können Sie das Dimension-Objekt im paint() berechnen Methode:
public class GamePanel extends JPanel implements Runnable { private Dimension dimension; // rest of the class public void paint(Graphics g) { super.paint(g); dimension = new Dimension(getWidth(), getHeight()); // ... } }
Übergeben Sie dann das Dimensionsobjekt an die Rect-Klasse:
for(Rect rect:rect){ rect.move(dimension); }
Das obige ist der detaillierte Inhalt vonWie kann ich JPanel-Breite und -Höhe genau aus einer externen Klasse abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!