Rumah > Java > javaTutorial > Bagaimana untuk Melukis Garis dalam JPanel Java Menggunakan Klik Tetikus dan Menyeret?

Bagaimana untuk Melukis Garis dalam JPanel Java Menggunakan Klik Tetikus dan Menyeret?

Mary-Kate Olsen
Lepaskan: 2024-12-19 13:03:17
asal
434 orang telah melayarinya

How to Draw Lines in a Java JPanel Using Mouse Clicks and Dragging?

Melukis Garisan dalam JPanel Menggunakan Klik Butang dalam Java

Dalam kod anda, anda telah memasukkan JPanel dan beberapa butang di dalamnya . Untuk melukis garisan dalam JPanel, anda perlu menggunakan kaedah paint(). Walau bagaimanapun, pada masa ini anda tidak menggunakannya dalam kod anda.

Melaksanakan Lukisan Garisan

Pertimbangkan untuk menggunakan pendekatan yang diubah suai untuk melukis garisan:

  1. Kendalikan klik tetikus untuk tandakan titik akhir pertama.
  2. Dayakan penyeretan untuk memaparkan garisan secara dinamik.
  3. Lepaskan butang tetikus untuk mewujudkan titik akhir kedua.

Kod Diubah Suai:

Berikut ialah versi semakan kod anda yang menggabungkan pendekatan ini:

import java.awt.*;
import java.awt.event.*;

public class circuit extends JFrame {

    private JPanel contentPane;
    private JPanel drawPane;
    private Point p1, p2;
    private boolean drawing;

    public circuit() {
        // Code...

        // Create the draw panel
        drawPane = new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                Graphics2D g2 = (Graphics2D) g;
                g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                if (p1 != null && p2 != null && drawing) {
                    g2.drawLine(p1.x, p1.y, p2.x, p2.y);
                }
            }
        };
        drawPane.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                drawing = true;
                p1 = e.getPoint();
                p2 = p1;
                drawPane.repaint();
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                drawing = false;
                p2 = e.getPoint();
                drawPane.repaint();
            }
        });
        drawPane.addMouseMotionListener(new MouseAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {
                if (drawing) {
                    p2 = e.getPoint();
                    drawPane.repaint();
                }
            }
        });

        // Add the draw panel to the content pane
        contentPane.add(drawPane, BorderLayout.CENTER);

        // Code...
    }

    public static void main(String[] args) {
        new circuit().setVisible(true);
    }
}
Salin selepas log masuk

Dalam kod ini, kaedah paintComponent() panel lukisan digunakan untuk melukis garisan antara dua titik p1 dan p2. Apabila tetikus pada mulanya ditekan, p1 diberikan kedudukan titik semasa. Semasa tetikus bergerak, p2 dikemas kini dan garisan dipaparkan secara dinamik. Apabila tetikus dilepaskan, p2 diberikan kedudukan titik akhir dan garisan dilukis pada panel.

Menggunakan Butang untuk Mempengaruhi Lukisan

Anda boleh meningkatkan lagi kod ini dengan mencipta set butang yang mempengaruhi proses lukisan, seperti menggerakkan garisan atau mengosongkan panel. Sebagai contoh, anda boleh membuat butang dengan tindakan menterjemah baris dengan jumlah tertentu berdasarkan arah label butang.

Kesimpulan

Anda kini boleh melukis garisan dalam JPanel menggunakan klik butang dan pergerakan tetikus. Butang boleh dilaksanakan untuk meningkatkan keupayaan lukisan, menjadikannya pengalaman yang lebih interaktif dan boleh disesuaikan.

Atas ialah kandungan terperinci Bagaimana untuk Melukis Garis dalam JPanel Java Menggunakan Klik Tetikus dan Menyeret?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan