Maison > Java > javaDidacticiel > Comment dessiner des lignes dans un JPanel Java en utilisant des clics de souris et en faisant glisser ?

Comment dessiner des lignes dans un JPanel Java en utilisant des clics de souris et en faisant glisser ?

Mary-Kate Olsen
Libérer: 2024-12-19 13:03:17
original
456 Les gens l'ont consulté

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

Tracer une ligne dans un JPanel à l'aide d'un clic de bouton en Java

Dans votre code, vous avez inclus un JPanel et plusieurs boutons à l'intérieur . Pour tracer une ligne dans le JPanel, vous devez utiliser la méthode paint(). Cependant, vous ne l'utilisez pas actuellement dans votre code.

Implémentation du dessin au trait

Envisagez d'utiliser une approche modifiée pour tracer des lignes :

  1. Gérez les clics de souris pour marquez le premier point d'extrémité.
  2. Activez le glisser pour afficher la ligne de manière dynamique.
  3. Relâchez le bouton de la souris pour établir le deuxième point de terminaison.

Code modifié :

Voici une version révisée de votre code qui intègre cette approche :

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

Dans ce code , la méthode paintComponent() du panneau de dessin est utilisée pour tracer la ligne entre les deux points p1 et p2. Lorsque vous appuyez initialement sur la souris, p1 se voit attribuer la position actuelle du point. Au fur et à mesure que la souris se déplace, p2 est mis à jour et la ligne est affichée dynamiquement. Lorsque la souris est relâchée, p2 se voit attribuer la position du point final et la ligne est tracée sur le panneau.

Utiliser les boutons pour influencer le dessin

Vous pouvez améliorer davantage ce code en créant un ensemble de boutons qui affectent le processus de dessin, comme déplacer la ligne ou effacer le panneau. Par exemple, vous pouvez créer un bouton avec l'action de traduire la ligne d'une certaine valeur en fonction de la direction de l'étiquette du bouton.

Conclusion

Vous pouvez désormais tracer des lignes dans un JPanel en cliquant sur un bouton. et les mouvements de la souris. Des boutons peuvent être implémentés pour améliorer les capacités de dessin, ce qui en fait une expérience plus interactive et personnalisable.

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