アプリケーションで、別のクラスから JPanel の幅と高さにアクセスする必要があるという問題が発生しました。クラス (Rect)。 JPanel には次元を取得するメソッドが用意されていますが、クラス外で呼び出される場合は 0 が返されます。
1 つの解決策は、JPanel インスタンスをパラメータとして Move に渡すことです。 Rect クラスの () メソッド。これにより、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 } }
別のアプローチは、JPanel のディメンション オブジェクトを取得し、それを move() メソッドに渡すことです:
public void move(Dimension dimension) { int jpWidth = dimension.width; int jpHeight = dimension.height; // rest of the movement logic using jpWidth and jpHeight }
GamePanel クラス内では、paint() で Dimension オブジェクトを計算できます。メソッド:
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()); // ... } }
次に、ディメンション オブジェクトを Rect クラスに渡します。
for(Rect rect:rect){ rect.move(dimension); }
以上が外部クラスから JPanel の幅と高さを正確に取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。