Heim > Java > javaLernprogramm > Wie zeichne ich Linien auf einem JPanel mithilfe von Tastenklicks in Java?

Wie zeichne ich Linien auf einem JPanel mithilfe von Tastenklicks in Java?

Patricia Arquette
Freigeben: 2024-12-14 12:22:13
Original
452 Leute haben es durchsucht

How to Draw Lines on a JPanel Using Button Clicks in Java?

So zeichnen Sie eine Linie in einem JPanel mit einem Button-Klick in Java

Der angegebene Code stellt eine grafische Benutzeroberfläche (GUI) mit bereit ein JPanel und mehrere Schaltflächen. Das Ziel besteht darin, Linien auf dem JPanel zu zeichnen, wenn auf die Schaltflächen geklickt wird.

Linien zeichnen

Um Linien auf dem JPanel zu zeichnen, können Sie die Methode drawLine() verwenden des Graphics-Objekts:

public void paint(Graphics graphics)
{
    graphics.drawLine(10, 20, 300, 310);
}
Nach dem Login kopieren

Dieser Code zeichnet eine Linie vom Punkt (10, 20) zum Punkt (300, 310). Sie können diese Koordinaten ändern, um Linien in verschiedenen Positionen und Richtungen zu zeichnen.

Ereignisbehandlung mit Mausereignissen

Um Benutzerinteraktionen wie Tastenklicks und Mausbewegungen zu verarbeiten, Sie können Ereignis-Listener verwenden. In diesem Fall verwenden Sie Maus-Listener, um zu erkennen, wann der Benutzer auf das JPanel klickt.

public class MouseHandler extends MouseAdapter {

    @Override
    public void mouseClicked(MouseEvent arg0) {


        /////////////


    }
}
Nach dem Login kopieren

In der Methode „mouseClicked“ können Sie den Code schreiben, um die Linie basierend auf dem Klick des Benutzers zu zeichnen.

Integration mit der GUI

Um den Strichzeichnungscode mit der GUI zu integrieren, müssen Sie eine hinzufügen Schaltfläche zum JPanel. Wenn auf die Schaltfläche geklickt wird, sollte dies die Methode „mouseClicked“ des MouseHandlers auslösen und die Linie zeichnen.

JLabel label = new JLabel("New label");
label.addMouseListener(new MouseHandler() {
   @Override
   public void mouseClicked(MouseEvent arg0) {


    /////////////


   }
});
contentPane.add(label);
Nach dem Login kopieren

In diesem Beispiel wird dem JPanel eine Schaltfläche mit dem Namen „Neue Beschriftung“ hinzugefügt. Wenn darauf geklickt wird, wird die Methode „mouseClicked“ des MouseHandlers aufgerufen. Sie können die Methode „mouseClicked“ ändern, um den Code zum Zeichnen der Linie einzuschließen.

Umgang mit mehreren Linien

Wenn Sie mehrere Linien zeichnen möchten, können Sie die angeklickten Punkte speichern vom Benutzer und zeichnen Sie Linien zwischen ihnen. Sie können einen List um die Punkte zu speichern und dann eine Linie zwischen jedem Paar aufeinanderfolgender Punkte zu zeichnen.

Beispielimplementierung

Hier ist ein vollständiges Beispiel, das das Zeichnen mehrerer Linien auf einem JPanel mit demonstriert Schaltflächenklicks:

import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;

public class Main {

    private ArrayList<Point> points = new ArrayList<>();
    private boolean drawing;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Main().display();
            }
        });
    }

    private void display() {
        JFrame f = new JFrame("LinePanel");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(640, 480));
        panel.addMouseListener(new MouseHandler());
        panel.addMouseMotionListener(new MouseHandler());
        f.add(panel);

        JButton clearButton = new JButton("Clear");
        clearButton.addActionListener(new AbstractAction() {

            @Override
            public void actionPerformed(ActionEvent e) {
                points.clear();
                panel.repaint();
            }
        });
        f.add(clearButton, BorderLayout.SOUTH);

        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    private class MouseHandler extends MouseAdapter {

        @Override
        public void mousePressed(MouseEvent e) {
            drawing = true;
            points.add(e.getPoint());
            panel.repaint();
        }

        @Override
        public void mouseReleased(MouseEvent e) {
            drawing = false;
            panel.repaint();
        }

        @Override
        public void mouseDragged(MouseEvent e) {
            if (drawing) {
                points.add(e.getPoint());
                panel.repaint();
            }
        }
    }
}
Nach dem Login kopieren

In diesem Beispiel wird ein JFrame mit einem JPanel und einer Schaltfläche „Löschen“ erstellt. Wenn der Benutzer auf das JPanel klickt, beginnt es mit dem Zeichnen einer Linie. Wenn die Maus bewegt wird, verlängert sich die Linie. Wenn Sie die Maus loslassen, ist die Zeile fertig. Mit der Schaltfläche „Löschen“ können Sie alle Zeilen löschen und von vorne beginnen.

Das obige ist der detaillierte Inhalt vonWie zeichne ich Linien auf einem JPanel mithilfe von Tastenklicks in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage