0
votes

Comment puis-je obtenir ma méthode Mouselistener pour travailler en Java?

Je suis très nouveau à Java et je fais un simple fabricant d'art de pixels. J'ai copié une boucle pour dessiner des cercles. Je faisais la méthode de clic de souris. Je l'ai fait pour que lorsque je clique, il imprime "Gauche" ou "Droite".

Ceci est le système de grille: http: //www.java2s .com / Tutorials / Java / Graphics / Forme / Draw_a_grid_by_drawing_lines_in_java.htm p>

Ceci est mon système de souris à souris de souris que j'ai utilisé: P>

https://github.com/devonCrawford/a-pathfinding-visualization/blob/master/src/ Cadre.java p>

Le seul problème est qu'il n'imprime pas la "gauche" et "droite". Voici mon code: P>

import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

class Main extends JComponent implements MouseListener {
  public static void main(String[] args) {
    JFrame window = new JFrame();
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setBounds(30, 30, 600, 584);
    window.getContentPane().add(new Main());
//    window.setResizable(false);
    window.setVisible(true);

  }

  public void paint(Graphics g) {
    int rows = 20;

    int cols = 20;
    int width = getSize().width;
    int height = getSize().height;

    // draw the rows
    int rowHt = height / (rows);
    for (int i = 0; i < rows; i++)
      g.drawLine(0, i * rowHt, width, i * rowHt);

    // draw the columns
    int rowWid = width / (cols);
    for (int i = 0; i < cols; i++)
      g.drawLine(i * rowWid, 0, i * rowWid, height);

  }

  public void MapCalculations(MouseEvent e) { 
    // If left mouse button is clicked
    if (SwingUtilities.isLeftMouseButton(e)) {
        System.out.println("Left");

    } 
    // If right mouse button is clicked
    else if (SwingUtilities.isRightMouseButton(e)) {
        System.out.println("Right");
    }
  }

  @Override
  public void mouseClicked(MouseEvent e) {
    MapCalculations(e);
  }

  @Override
  public void mousePressed(MouseEvent e) {}

  @Override
  public void mouseReleased(MouseEvent e) {}

  @Override
  public void mouseEntered(MouseEvent e) {}

  @Override
  public void mouseExited(MouseEvent e) {}

  public void mouseDragged(MouseEvent e) {
    MapCalculations(e);
  }
}


0 commentaires

3 Réponses :


1
votes

Les méthodes d'auditeur de souris ne sont jamais appelées car le framework ne sait pas quand les appeler.

Essayez d'ajouter l'auditeur de souris à votre objet dans la méthode principale en tant que telle: < / p> xxx


2 commentaires

Ouais, je vois ça maintenant


Ne vous sentez pas stupide, je ne peux pas vous dire combien de fois j'ai oublié d'ajouter l'auditeur ...



0
votes

La méthode n'est jamais appelée parce que vous n'ajoutez jamais un auditeur de souris à rien.

Vous voulez probablement, dans le constructeur principal, xxx

Vous devez vraiment respecter les conventions de nommage Java. Méthodes commencent par un charier minuscule. Et vous ne devriez pas utiliser peinture () pour dessiner des composants swing. Lire Tutoriel .


1 commentaires

Ne pas être en désaccord avec la réponse, mais la première ligne "Vous n'ajoutez jamais d'auditeur de souris à quoi que ce soit" peut être lu comme "vous Devrait Ne jamais ajouter un auditeur de souris à quoi que ce soit" (comment je le lisions initialement et a ensuite été confondu par les conseils de la ligne suivante ...). Je considérerais une reformulation pour rendre le sens voulu plus clair.



0
votes

Voici un pourboire. Implémentez votre mouselistener dans une classe intérieure.

window.addMouseListener(new MyMouseListener());


0 commentaires