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); }
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) { ///////////// } }
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);
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
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(); } } } }
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!