Mengubah Saiz Kanvas untuk Mengisi Induk Melampirkan dalam JavaFX
Pertanyaan berkisar pada saiz semula elemen Kanvas secara automatik agar sesuai dengan Peringkat induknya dalam JavaFX. Kunci untuk mencapai ini adalah melalui mengikat dan mencipta Anak Tetingkap tersuai yang membalut Kanvas.
Mencipta KanvasPane
Untuk mencipta Kanvas yang boleh diubah saiz, kami mentakrifkan bersarang statik class, CanvasPane, yang memanjangkan Pane dan mengatasi kaedah layoutChildren(). Dengan mengatasi kaedah ini, kita boleh memaksa dimensi Kanvas untuk memadankan Anak Tetingkap yang disertakan. Harap maklum bahawa Kanvas dengan sendirinya tidak boleh diubah saiznya dan ibu bapa tidak boleh mengubah saiznya secara automatik.
Berikut ialah kaedah layoutChildren() untuk CanvasPane:
<code class="java">@Override protected void layoutChildren() { super.layoutChildren(); final double x = snappedLeftInset(); final double y = snappedTopInset(); final double w = snapSize(getWidth()) - x - snappedRightInset(); final double h = snapSize(getHeight()) - y - snappedBottomInset(); canvas.setLayoutX(x); canvas.setLayoutY(y); canvas.setWidth(w); canvas.setHeight(h); }</code>
Menggunakan CanvasPane
Dalam kelas Aplikasi utama kami, kami membalut Kanvas kami dalam CanvasPane:
<code class="java">CanvasPane canvasPane = new CanvasPane(WIDTH, HEIGHT); canvas = canvasPane.getCanvas();</code>
Dengan CanvasPane, Kanvas akan mengubah saiz secara automatik untuk mengisi Peringkat yang disertakan.
Pertimbangan Tambahan
Jawapan yang diterima dalam soalan Stack Overflow yang dirujuk tidak mempunyai pengikatan yang digambarkan di sini. Pendekatan ini menyediakan penyepaduan yang lebih lancar antara Kanvas dan reka letak induknya.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Saiz Kanvas Secara Automatik untuk Mengisi Peringkat Induknya dalam JavaFX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!