Maison >Java >javaDidacticiel >Comment récupérer avec précision la largeur et la hauteur de JPanel à partir d'une classe externe ?

Comment récupérer avec précision la largeur et la hauteur de JPanel à partir d'une classe externe ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-12 13:06:10314parcourir

How to Accurately Retrieve JPanel Width and Height from an External Class?

Récupération de la largeur et de la hauteur d'un JPanel à partir d'une classe externe

Dans votre application, vous rencontrez un problème où vous devez accéder à la largeur et à la hauteur d'un JPanel à partir d'un classe (Rect). JPanel fournit des méthodes pour récupérer ses dimensions, mais elles renvoient 0 lorsqu'elles sont appelées en dehors de la classe.

Passer l'instance de JPanel à la classe Rect

Une solution consiste à transmettre l'instance de JPanel en tant que paramètre au déplacement () dans la classe Rect. Cela permet d'accéder aux dimensions du JPanel :

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
    }
}

Passer l'objet Dimension

Une autre approche consiste à obtenir l'objet Dimension du JPanel et à le transmettre à la méthode move() :

public void move(Dimension dimension) {
    int jpWidth = dimension.width;
    int jpHeight = dimension.height;

    // rest of the movement logic using jpWidth and jpHeight
}

Dans la classe GamePanel, vous pouvez calculer l'objet Dimension dans le paint() méthode :

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());

        // ...
    }
}

Ensuite, transmettez l'objet dimension à la classe Rect :

for(Rect rect:rect){
    rect.move(dimension);
}

Considérations

  • La première méthode est plus pratique si vous avez besoin pour accéder directement à la largeur et à la hauteur de JPanel.
  • La deuxième méthode est plus flexible car elle donne accès à l'objet Dimension, qui peut être utilisé pour des calculs ou du stockage.
  • Pour des performances optimales, évitez de calculer l'objet Dimension à plusieurs reprises. Utilisez une variable privée pour mettre en cache la dernière valeur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn