Comment tracer une ligne dans un JPanel avec un clic sur un bouton en Java
Le code donné fournit une interface utilisateur graphique (GUI) avec un JPanel et plusieurs boutons. Le but est de tracer des lignes sur le JPanel lorsque l'on clique sur les boutons.
Dessiner des lignes
Pour tracer des lignes sur le JPanel, vous pouvez utiliser la méthode drawLine() de l'objet Graphics :
public void paint(Graphics graphics) { graphics.drawLine(10, 20, 300, 310); }
Ce code trace une ligne du point (10, 20) au point (300, 310). Vous pouvez modifier ces coordonnées pour tracer des lignes dans différentes positions et directions.
Gestion des événements avec les événements de souris
Pour gérer les interactions de l'utilisateur, telles que les clics sur les boutons et les mouvements de la souris, vous pouvez utiliser des écouteurs d'événements. Dans ce cas, vous utiliserez des écouteurs de souris pour détecter le moment où l'utilisateur clique sur le JPanel.
public class MouseHandler extends MouseAdapter { @Override public void mouseClicked(MouseEvent arg0) { ///////////// } }
Dans la méthode mouseClicked, vous pouvez écrire le code pour tracer la ligne en fonction du clic de l'utilisateur.
Intégration avec l'interface graphique
Pour intégrer le code de dessin au trait avec l'interface graphique, vous avez besoin pour ajouter un bouton au JPanel. Lorsque le bouton est cliqué, il doit déclencher la méthode mouseClicked du MouseHandler et tracer la ligne.
JLabel label = new JLabel("New label"); label.addMouseListener(new MouseHandler() { @Override public void mouseClicked(MouseEvent arg0) { ///////////// } }); contentPane.add(label);
Dans cet exemple, un bouton nommé "Nouvelle étiquette" est ajouté au JPanel. Lorsqu'on clique dessus, il appelle la méthode mouseClicked du MouseHandler. Vous pouvez modifier la méthode mouseClicked pour inclure le code permettant de tracer la ligne.
Gestion de plusieurs lignes
Si vous souhaitez dessiner plusieurs lignes, vous pouvez stocker les points cliqués par l'utilisateur et tracez des lignes entre eux. Vous pouvez utiliser une liste
Exemple de mise en œuvre
Voici un exemple complet qui montre le dessin de plusieurs lignes sur un JPanel avec clics sur le bouton :
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(); } } } }
Cet exemple crée un JFrame avec un JPanel et un bouton "Effacer". Lorsque l'utilisateur clique sur le JPanel, il commence à tracer une ligne. Au fur et à mesure que la souris est déplacée, la ligne s'étend. Lorsque la souris est relâchée, la ligne est terminée. Le bouton "Effacer" peut être utilisé pour effacer toutes les lignes et recommencer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!