Dalam aplikasi anda, anda menghadapi masalah di mana anda perlu mengakses lebar dan tinggi JPanel daripada yang berasingan kelas (Rect). JPanel menyediakan kaedah untuk mendapatkan semula dimensinya, tetapi ia mengembalikan 0 apabila dipanggil di luar kelas.
Satu penyelesaian adalah dengan menghantar contoh JPanel sebagai parameter untuk bergerak () kaedah dalam kelas Rect. Ini memberikan akses kepada dimensi 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 } }
Pendekatan lain ialah mendapatkan objek Dimensi JPanel dan menghantarnya kepada kaedah move():
public void move(Dimension dimension) { int jpWidth = dimension.width; int jpHeight = dimension.height; // rest of the movement logic using jpWidth and jpHeight }
Di dalam kelas GamePanel, anda boleh mengira objek Dimensi dalam paint() kaedah:
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()); // ... } }
Kemudian, hantar objek dimensi ke kelas Rect:
for(Rect rect:rect){ rect.move(dimension); }
Atas ialah kandungan terperinci Bagaimana untuk Mengambil Lebar dan Ketinggian JPanel dengan Tepat daripada Kelas Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!