Rumah >Java >javaTutorial >Bagaimana untuk Memusatkan JFrame Boleh Resizable dengan Tepat dan Mengesan Perlanggaran dengan Tepinya?

Bagaimana untuk Memusatkan JFrame Boleh Resizable dengan Tepat dan Mengesan Perlanggaran dengan Tepinya?

DDD
DDDasal
2024-12-04 09:29:11723semak imbas

How to Accurately Center a Resizable JFrame and Detect Collisions with its Edges?

Menyelesaikan Kedudukan Pusat Tepat dalam JFrame Boleh Resizable

Pertanyaan anda mengemukakan dua cabaran: pengesanan perlanggaran tepat dengan tepi bingkai dan menentukan pusat tepat, tanpa mengira skrin saiz.

Pembetulan Pengesanan Perlanggaran

Imbang 10 piksel yang diperhatikan dalam pengesanan perlanggaran berkemungkinan berpunca daripada salah faham tentang dimensi bingkai. JFrame termasuk sempadan, JRootPane dan komponen lain di sekeliling anak tetingkap kandungan sebenar. Oleh itu, anda perlu melaraskan pengiraan anda untuk mengambil kira lebar dan ketinggian sempadan.

Untuk mendapatkan kawasan boleh lukis yang tepat, gunakan formula:

Width - border.width
Height - border.height

Penentuan Pusat Skrin Tepat

Untuk mencari bahagian tengah skrin yang tepat, pertimbangkan berikut:

  • Perspektif Bingkai: Pusat berada pada (100x100) berdasarkan dimensi bingkai.
  • Perspektif Anak Tetingkap Kandungan: pusat berada di (92x81) berdasarkan anak tetingkap kandungan dimensi.

Pilihan nilai yang hendak digunakan bergantung pada tujuan anda:

  • Untuk meletakkan bingkai, gunakan titik tengah bingkai.
  • Untuk mengecat, gunakan titik tengah anak tetingkap kandungan.

Kaedah untuk Memusatkan Bingkai

Untuk mudah memusatkan bingkai pada skrin, panggil Window#setLocationRelativeTo(null).

Sebagai alternatif, anda boleh menggunakan formula berikut:

JFrame frame = ...;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screenSize.width - frame.getWidth()) / 2;
int y = (screenSize.height - frame.getHeight()) / 2;
frame.setLocation(x, y);

Atas ialah kandungan terperinci Bagaimana untuk Memusatkan JFrame Boleh Resizable dengan Tepat dan Mengesan Perlanggaran dengan Tepinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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