ホームページ > Java > &#&チュートリアル > JPanel の幅と高さをクラス外から取得するにはどうすればよいですか?

JPanel の幅と高さをクラス外から取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-09 18:51:14
オリジナル
592 人が閲覧しました

How Can I Get a JPanel's Width and Height from Outside Its Class?

クラス外の JPanel の幅と高さを取得する

問題の説明:

JPanel の正確な幅と高さの値を取得するJPanel がそのクラスの外部からアクセスする場合、特にウィンドウのサイズ変更中など、これらの値が動的に変化する場合は困難になる可能性があります。この記事では、この問題に対処するためのさまざまなアプローチを検討します。

解決策 1: カスタム プロパティ変更リスナー

JPanel の幅の変更を監視するためにカスタム プロパティ変更リスナーを実装できます。そして高さのプロパティ。このアプローチにより、更新された値が変更されるたびに直接アクセスできるようになります。

import java.awt.event.PropertyChangeListener;
import java.awt.event.PropertyChangeEvent;

class JPanelWidthHeightListener implements PropertyChangeListener {
  private int width;
  private int height;

  public int getWidth() {
    return width;
  }

  public int getHeight() {
    return height;
  }

  @Override
  public void propertyChange(PropertyChangeEvent evt) {
    // PropertyChangeEvent e contains the target object (in this case, JPanel)
    if (evt.getPropertyName().equals("bounds")) {
      width = evt.getNewValue().getWidth();
      height = evt.getNewValue().getHeight();
    }
  }
}
ログイン後にコピー

解決策 2: 匿名の内部クラス プロパティ変更リスナー

匿名の内部クラス プロパティ変更リスナー別のリスナー クラスを作成する必要がなくなります。このアプローチはより簡潔であり、更新された幅と高さの値へのアクセスも提供します。

PropertyChangeListener pcl = new PropertyChangeListener() {
  @Override
  public void propertyChange(PropertyChangeEvent evt) {
    if (evt.getPropertyName().equals("bounds")) {
      int width = evt.getNewValue().getWidth();
      int height = evt.getNewValue().getHeight();
    }
  }
};
ログイン後にコピー

解決策 3: 内部クラスから JPanel にアクセスする

JPanel にアクセスする場合別のクラス内から必要な場合は、内部クラスまたは匿名内部クラスの使用を検討してください。これにより、JPanel のメソッドとプロパティに直接アクセスできるようになります。

JPanel panel = new JPanel();

// Inner class that extends JPanel
class MyInnerPanel extends JPanel {
  public int getMyWidth() {
    return getWidth();
  }

  public int getMyHeight() {
    return getHeight();
  }
}

// Anonymous inner class that extends JPanel
JPanel anonymousPanel = new JPanel() {
  @Override
  public int getWidth() {
    return super.getWidth();
  }

  @Override
  public int getHeight() {
    return super.getHeight();
  }
};
ログイン後にコピー

解決策 4: JPanel をパラメータとして渡す

特定のシナリオでは、JPanel をパラメータとして渡します。他のメソッドやクラスでは、追加のリスナーや内部メソッドを必要とせずに、その幅と高さのプロパティに直接アクセスできます。

class MyExternalClass {
  public void doSomething(JPanel panel) {
    int width = panel.getWidth();
    int height = panel.getHeight();
  }
}
ログイン後にコピー

結論:

クラス外の JPanel の幅と高さを取得するためのアプローチの選択は、アプリケーションの特定の要件によって異なります。 。カスタム プロパティ変更リスナーは、変更を監視するための柔軟かつ集中的な方法を提供し、内部クラスとパラメータの受け渡しは JPanel のプロパティへのより直接的なアクセスを提供します。最も適切なソリューションを選択すると、更新された幅と高さの値に効率的かつ信頼性の高いアクセスが保証されます。

以上がJPanel の幅と高さをクラス外から取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート