MouseMotionListener trop lent [Résolu]

qhhu 67 Messages postés vendredi 16 décembre 2005Date d'inscription 21 octobre 2009 Dernière intervention - 19 juil. 2006 à 23:04 - Dernière réponse : qhhu 67 Messages postés vendredi 16 décembre 2005Date d'inscription 21 octobre 2009 Dernière intervention
- 26 juil. 2006 à 10:37
Bonjour a tous!
J'ai un probleme avec java.awt.event.MouseMotionListener.
En effet je cherche a faire un programme du style "Qui trouvez vous le plus intelligent?" avec 2 boutons "moi" et "l'autre".
Mais quant on déplace la souris, le bouton "moi" rest toujours sous la souris pour qu'on puisse pas appuyer sur "l'autre"
Seulement, le bouton ne suit pas assez vite la souris et on peut toujours cliquer sur "l'autre".
Je pense que c'est MouseMotionListenet qui n'est pas assez précis.
Qqn aurait il une idée svp???

Merci d'avance
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Twinuts 5279 Messages postés dimanche 4 mai 2003Date d'inscription 19 septembre 2018 Dernière intervention - 20 juil. 2006 à 12:48
3
Merci
Salut,


visiblement ton problème ne vient pas de la vitesse du mouse move mais
plustot de la superposition des jbuttons enfaite il faut que tu trouve
le moyen d'invalider le focus sur le bouton 'autre' pour se faire tu
peux toujour regarder si l'ajout d'un glass pane peut t'aider mais j'ai
un petit doute dessus (pour t'aider il y a cette source ICI)


sinon le plus simple et le plus logique (pour moi) serait de deplacer
le bouton autre des que la souri s'en approche et non de coller le
bouton moi au pointeur.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA

Merci Twinuts 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Twinuts
Twinuts 5279 Messages postés dimanche 4 mai 2003Date d'inscription 19 septembre 2018 Dernière intervention - 20 juil. 2006 à 00:15
0
Merci
Salut,


il se peux que ton prob se passe dans ton algo peux-tu donner l'algo du mousemoved afin de voir ce qui ne va pas ?


en attendant tu peux toujour essayé de cliquer sur le boutton


import java.awt.Dimension;

import java.awt.Point;

import java.awt.Rectangle;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionListener;


import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.SwingUtilities;


public class TestMove extends JFrame implements MouseMotionListener {

    private static final long    serialVersionUID    = 5499846059374124350L;

   

    private JPanel jContentPane = null;

    private JButton button = null;

   

    public static void main(String [] args ){

        SwingUtilities.invokeLater(new Runnable(){

            public void run(){

                new TestMove().setVisible(true);

            }

        });

    }

   

    public TestMove(){

        setDefaultCloseOperation(EXIT_ON_CLOSE);

        setSize(new Dimension(300, 300));

        setLocationRelativeTo(null);

        setContentPane(getJContentPane());

    }

   

    public JButton getButton(){

        if(button == null){

            button = new JButton("Test");

            button.setBounds(new Rectangle(50, 50, 50, 20));

        }

        return button;

    }

   

    public JPanel getJContentPane(){

        if(jContentPane == null){

            jContentPane = new JPanel();

            jContentPane.addMouseMotionListener(this);

            jContentPane.setLayout(null);

            jContentPane.add(getButton());

        }

        return jContentPane;

    }


    public void mouseDragged(MouseEvent e) { }


    public void mouseMoved(MouseEvent e) {

        Point p = e.getPoint();

        getButton().setLocation(p.x-20, p.y+20);

       

    }

}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Commenter la réponse de Twinuts
qhhu 67 Messages postés vendredi 16 décembre 2005Date d'inscription 21 octobre 2009 Dernière intervention - 20 juil. 2006 à 11:39
0
Merci
Voici mon petit code :

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class test extends JFrame implements ActionListener, MouseMotionListener{
    JLabel lab = new JLabel("Selon vous, qui est le plus intelligent?");
    JButton moi = new JButton("Moi");
    JButton autre = new JButton("L'autre");
    int x = 200;
    int y = 200;
   
    public test(){
        super("Test");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds( 100,100,600,600 );
        JPanel pane = new JPanel();
        pane.setLayout(null);
        lab.setBounds(new Rectangle(10,10,390,390));
        autre.setBounds(new Rectangle(100,100,90,40));
        moi.setBounds(new Rectangle(x,y,90,40));
        autre.addActionListener(this);
        moi.addActionListener(this);
        pane.addMouseMotionListener(this);
        pane.add(lab);
        pane.add(autre);
        pane.add(moi);
        add(pane);
        setVisible(true);
       
    }
    public void actionPerformed(ActionEvent evt){
        if(evt.getSource()==autre){
            JOptionPane.showMessageDialog(null,"Vous avez du vous tromper!!\nRecommençons","C'est une blague ou quoi???",JOptionPane.QUESTION_MESSAGE);
        } else{
            JOptionPane.showMessageDialog(null,"Bravo! Vous avez fait le bon choix!","BRAVO!",JOptionPane.QUESTION_MESSAGE);
            System.exit(0);
        }
    }
    public void mouseMoved(MouseEvent evt){
        x = evt.getX()-45;
        y = evt.getY()-20;
        repaintButton();
    }
    public void mouseDragged(MouseEvent evt){}
    public void repaintButton(){
        moi.setBounds(new Rectangle(x,y,90,40));
        repaint();
    }
    public static void main(String[] args){
        new test();
    }
   
   
}
Commenter la réponse de qhhu
qhhu 67 Messages postés vendredi 16 décembre 2005Date d'inscription 21 octobre 2009 Dernière intervention - 26 juil. 2006 à 10:37
0
Merci
Ok merci bcp pour tes conseils !
Ca ma vraiment aidé!
Et en ce qui concerne le bouton qui se déplace sous la souris, j'ai trouvé un systeme qui utilise une JWindow.
Comme ca, plus de problème de focus.

A+
Commenter la réponse de qhhu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.