Melukis Segi Empat Yang Tidak Akan Hilang
Dalam kod anda, anda telah mencipta kelas MyPanel yang memanjangkan JPanel. Dalam kelas ini, anda mentakrifkan kaedah DrawRect yang mengambil beberapa hujah untuk melukis segi empat tepat. Walau bagaimanapun, apabila anda memanggil repaint(), ia melukis semula keseluruhan panel, termasuk segi empat tepat sebelumnya.
Untuk mengelakkan ini, anda boleh menggunakan Graphics2D.drawImage() untuk melukis segi empat tepat anda di atas kanvas sedia ada. Begini cara anda boleh mengubah suai kod anda:
<code class="java">class MyPanel extends JPanel { private BufferedImage canvasImage; // Create a BufferedImage to store the canvas public void DrawRect(int x, int y, int size, Color c) { if (canvasImage == null) { canvasImage = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g = canvasImage.createGraphics(); g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); g.dispose(); } Graphics2D g = canvasImage.createGraphics(); g.setColor(c); g.fillRect(x, y, size, size); g.dispose(); repaint(); } @Override public void paint(Graphics g) { super.paint(g); g.drawImage(canvasImage, 0, 0, null); // Draw the canvasImage onto the panel } }</code>
Nota:
Atas ialah kandungan terperinci Bagaimana untuk Melukis Segi Empat Yang Tidak Akan Hilang pada JPanel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!