Maison > Java > javaDidacticiel > Comment dessiner des lignes sur un JPanel à l'aide de clics sur des boutons en Java ?

Comment dessiner des lignes sur un JPanel à l'aide de clics sur des boutons en Java ?

Patricia Arquette
Libérer: 2024-12-14 12:22:13
original
450 Les gens l'ont consulté

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

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);
}
Copier après la connexion

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) {


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


    }
}
Copier après la connexion

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);
Copier après la connexion

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 pour stocker les points, puis tracer une ligne entre chaque paire de points consécutifs.

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();
            }
        }
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal