Rumah >Java >javaTutorial >Bagaimana untuk Memusatkan Segiempat tepat dalam Bingkai Java yang tidak boleh diubah saiz?

Bagaimana untuk Memusatkan Segiempat tepat dalam Bingkai Java yang tidak boleh diubah saiz?

Linda Hamilton
Linda Hamiltonasal
2024-12-05 04:51:14893semak imbas

How to Properly Center a Rectangle within a Non-resizable Java Frame?

Cara Memusatkan Segiempat tepat dalam Bingkai Java

Masalah:

Di Jawa, anda telah mencipta bingkai segi empat tepat dengan saiz tetap (800, 400) dan menetapkannya sebagai tidak boleh diubah saiz. Segi empat tepat, yang dilukis dengan koordinat (50, 50, 700, 300), kelihatan sedikit di luar tengah ke arah atas bingkai.

Jawapan:

Isu terletak pada fakta bahawa bingkai mempunyai hiasan yang wujud (sempadan dan bar tajuk) yang menggunakan ruang dalam kawasan bingkai. Apabila melukis terus ke permukaan bingkai, seperti yang diandaikan dalam kes ini, hiasan ini boleh mengalihkan bahagian tengah bingkai yang dilihat.

Untuk melukis segi empat tepat di tengah bingkai sebenar, anda harus memaparkannya pada bingkai kawasan kandungan. Kawasan ini tidak termasuk hiasan dan mewakili permukaan yang tersedia untuk lukisan.

Demonstrasi:

Dalam contoh kod Java yang disediakan:

  • BadFrame: Bingkai ini mengatasi kaedah paint() dan melukis segi empat tepat terus ke bingkai itu sendiri. Ia mempamerkan masalah luar pusat.
  • PaintablePane: Sub-bekas yang berfungsi sebagai kawasan kandungan untuk GoodFrame. Ia mengatasi kaedah getPreferredSize() dan paintComponent() untuk menetapkan saiz kawasan kandungan dan melukis segi empat tepat dengan betul.

goodFrame kemudian menggunakan PaintablePane sebagai anak tetingkap kandungannya, memastikan semua lukisan berlaku dalam kawasan yang ditetapkan. Hiasan bingkai kini dianggap luar kawasan lukisan dan segi empat tepat ditengahkan seperti yang dimaksudkan.

Atas ialah kandungan terperinci Bagaimana untuk Memusatkan Segiempat tepat dalam Bingkai Java yang tidak boleh diubah saiz?. 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