Problème sous navigateur

lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012 - 7 juin 2012 à 09:05
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012 - 7 juin 2012 à 09:37
Bonjour à tous :).

Je voulais me lancer dans la programmation d'applet en java, et au bout de 10mn, je suis déjà coincé par quelque chose que je ne comprends.
La première chose que j'ai voulu faire, c'est récupérer la position de ma souris sur l'écran (pour développer un petit jeu, mais ça, osef).

Lorsque j’exécute mon fichier avec NetBeans, cela fonctionne, cependant, lorsque je lance le fichier html généré par NetBeans dans mon navigateur, rien ne passe (testé sous Chrome et FireFox).

J'ai rajouté un JOptionPane.showMessageDialog(...) à la fin de la méthode init() de mon applet, et le message apparait, c'est donc qu'il arrive jusque là sans erreur ...

Je vous copie le code des deux petites classes que j'ai écrite, et j'espère que vous pourrez m'aider à comprendre mon problème :)

import java.awt.BorderLayout;
import javax.swing.JApplet;
import javax.swing.JLabel;

/**
 *
 * @author lolindir
 */
public class mainFrame extends JApplet
{
    private boolean processing = true;
    private JLabel jlPosMouse = null;
    
    @Override
    public void init()
    {
        this.setSize(600,600);
        this.setLayout(new BorderLayout());
        mousePosition mp = new mousePosition(this);
        jlPosMouse = new JLabel("");
        this.getContentPane().add(jlPosMouse, BorderLayout.CENTER);
        mp.start();
    }

    public boolean isProcessing()
    {
        return this.processing;
    }
    
    public void updatePosmouse(int x, int y)
    {
        this.jlPosMouse.setText("mousePosition (x, y) : (" + x + ", " + y + ")");
    }
    
    @Override
    public void destroy()
    {
        this.processing = false;
    }
}


import java.awt.MouseInfo;

/**
 *
 * @author lolindir 
 */
public class mousePosition extends Thread
{
    private mainFrame mf = null;

    public mousePosition(mainFrame mf)
    {
        this.mf = mf;
    }

    @Override
    public void run()
    {
        while( this.mf.isProcessing() )
        {
            try
            {
                Thread.sleep(100);
            } catch (Exception ignore){}
            this.mf.updatePosmouse(MouseInfo.getPointerInfo().getLocation().x, MouseInfo.getPointerInfo().getLocation().y);
        }
    }
}

3 réponses

lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012
7 juin 2012 à 09:10
Le code de la page html, si ça peut être utile:
<HTML>
    <HEAD>
        <TITLE>Page HTML d'applet</TITLE>
    </HEAD>
    
        
    
</HTML>
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012
7 juin 2012 à 09:14
Exception in thread "Thread-11" java.security.AccessControlException: access denied (java.awt.AWTPermission watchMousePointer)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.awt.MouseInfo.getPointerInfo(Unknown Source)
at mousePosition.run(mousePosition.java:29)


Je viens de trouver ce message d'erreur dans la console Java (que je viens de découvrir ...), j'ai cru comprendre que pour certaine fonction, il fallait signer son applet, dans ce cas là, comment dois-je m'y prendre ? Est-ce une opération longue ou toute simple ?
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012
7 juin 2012 à 09:37
Et autre question (puisque je pense avoir résolu mon problème en fait), j'arrive à connaitre la position de la souris à l'écran, mais, j'aimerai pouvoir savoir si la souris est au dessus de mon applet java ou non, et connaitre la position de la souris par rapport au x,y de mon applet, je pourrai faire un this.getX() et this.getY(), mais si la fenêtre est bougée, ces deux paramètres ne se mettent pas à jour ...
Et je n'arrive pas à faire fonctionner la fonction this.isFocusOwner() pour vérifier que la page contenant l'applet est la fenêtre active (pour mettre le jeu en pause lorsque l'utilisateur change de fenêtre, que ce soit par erreur ou non)

Je sais que ça fait beaucoup de question, mais, je suis un peu perdu, en fait :S !

Merci d'avance à qui voudra bien prendre le temps de m'éclairer, et bonne journée :).
Rejoignez-nous