Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mendapatkan Lebar dan Tinggi JPanel dari Luar Kelasnya?

Bagaimanakah Saya Boleh Mendapatkan Lebar dan Tinggi JPanel dari Luar Kelasnya?

Mary-Kate Olsen
Lepaskan: 2024-12-09 18:51:14
asal
629 orang telah melayarinya

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

Dapatkan Lebar dan Ketinggian JPanel Di Luar Kelas

Penerangan Masalah:

Mendapatkan nilai lebar dan ketinggian yang tepat untuk JPanel apabila mengaksesnya dari luar kelasnya boleh menjadi mencabar, terutamanya apabila nilai tersebut berubah secara dinamik, seperti seperti semasa mengubah saiz tetingkap. Artikel ini meneroka pendekatan yang berbeza untuk menangani isu ini.

Penyelesaian 1: Pendengar Perubahan Harta Tersuai

Pendengar perubahan sifat tersuai boleh dilaksanakan untuk memantau perubahan pada lebar JPanel dan sifat ketinggian. Pendekatan ini menyediakan akses terus kepada nilai yang dikemas kini apabila nilai tersebut berubah.

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();
    }
  }
}
Salin selepas log masuk

Penyelesaian 2: Pendengar Perubahan Harta Kelas Dalam Tanpa Nama

Pendengar perubahan sifat kelas dalaman tanpa nama menghapuskan keperluan untuk mencipta kelas pendengar yang berasingan. Pendekatan ini lebih ringkas dan masih menyediakan akses kepada nilai lebar dan ketinggian yang dikemas kini.

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();
    }
  }
};
Salin selepas log masuk

Penyelesaian 3: Mengakses JPanel dari Inner Class

Jika akses kepada JPanel diperlukan dari dalam kelas yang berasingan, pertimbangkan untuk menggunakan kelas dalam atau kelas dalam tanpa nama. Ini membenarkan akses terus kepada kaedah dan sifat 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();
  }
};
Salin selepas log masuk

Penyelesaian 4: Melepasi JPanel sebagai Parameter

Dalam senario tertentu, menghantar JPanel sebagai parameter kepada kaedah atau kelas lain boleh membenarkan akses terus kepada sifat lebar dan ketinggiannya tanpa memerlukan pendengar tambahan atau dalaman kelas.

class MyExternalClass {
  public void doSomething(JPanel panel) {
    int width = panel.getWidth();
    int height = panel.getHeight();
  }
}
Salin selepas log masuk

Kesimpulan:

Pilihan pendekatan untuk mendapatkan lebar dan tinggi JPanel di luar kelasnya bergantung pada keperluan khusus aplikasi . Pendengar perubahan sifat tersuai menyediakan cara yang fleksibel dan terpusat untuk memantau perubahan, manakala kelas dalaman dan lulus parameter menawarkan lebih banyak akses terus kepada sifat JPanel. Memilih penyelesaian yang paling sesuai memastikan akses yang cekap dan boleh dipercayai kepada nilai lebar dan ketinggian yang dikemas kini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Lebar dan Tinggi JPanel dari Luar Kelasnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan