IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Applets Java Discussion :

JApplet et images


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut JApplet, images et signatures
    Bonjour,

    Je suis entrain de travailler sur un applet java et le problème c'est que je n'arrive même pas à afficher une image tout ça car j'ai une "SecurityAccessException", ce que je comprend vu qu'un applet ne peut pas accéder au disque il ne peut accéder qu'a son serveur, j'ai essayé avec wamp de mettre mon projet sur le localhost mais j'ai toujours le même problème.
    J'utilise JCreator mais quand je lance mon projet avec lui, il lance l'applet viewer et j'ai ni exception, ni image qui s'affiche...

    Voila le code que j'utilise pour afficher une image dans un JPanel, en sachant que j'utilise le système MVC c'est pour ça que mon image est dans "Res" (je précise car le problème pourrai venir du path mais j'en ai essayé plein donc je pense que mon code pour l'image est bon...):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    public class ViewCanvasBox extends JPanel
    {
    	private static final long serialVersionUID = 1L;
    	private CtrlCanvasBox myBox;
     
        private void createCanvasBox()
        {
    	 setPreferredSize(new Dimension(myBox.getWidth(), myBox.getHeight()));
        	 setBorder(BorderFactory.createLineBorder(Color.black));
        	 setToolTipText("<html><u>Coordinate:</u><br/>-x: "
        		+(myBox.getCoordX()+1)+"<br/>-y: "
        		+(myBox.getCoordY()+1)
        		+"<br/><u>Properties:</u><br/>-toto<br/>-tata</html>");
        }
     
        public ViewCanvasBox(CtrlCanvasBox box)
        {
        	myBox = box;
        	createCanvasBox();
        	repaint();
        }
     
        protected void paintComponent(Graphics g)
        {
    	g.drawImage(new ImageIcon("./Res/grass.gif").getImage(), 0, 0, null);
        }
    }

    EDIT:

    J'ai fais une modification pour essayer de comprendre d'où venais le problème, et lorsque je lance avec JCreator (donc appletviewer) j'ai que l'exeption 1 sur l'écriture (SecurityAccessControl.Exception "fichier" write), et quand je l'ouvre avec le navigateur j'ai les 2, d'ailleur pour l'exeption 2 ça ouvre une dialoug box avec rien d'écrit dessus, je sais que c'est cette exeption car le nom de la dialogue box est "Exeption 2", mais y a ni image ni rien et y en a 2 qui s'ouvre, ça doit être du au fait que je l'ai placé dans le paincomponent, ce qui je me doute bien n'est pas très judicieux, mais c'est juste pour essayer de mieux comprendre. Ca voudrait logiquement dire que l'appletviewer a les droits de lecture, mais aors pourquoi il affiche pas l'image et n'envoie pas d'exeption!? il devrait faire soit l'un soit l'autre normalement!



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public class ViewObject extends JComponent
    {
        private String test1, test2;
     
        public ViewObject(String _test1, String _test2)
        {
        	test1 = _test1;
        	test2 = _test2;
     
        	setPreferredSize(new Dimension(50, 50));
        	setBorder(BorderFactory.createLineBorder(Color.black));
     
        	repaint();
        	try
        	{
    	    PrintWriter writer = new PrintWriter( new FileWriter("dummy.txt"),true );
    	    writer.println("hello, world");
    	    writer.close();
        	}
        	catch(Exception e)
        	{
        	    JOptionPane.showMessageDialog(null, e, "Exception 1", JOptionPane.INFORMATION_MESSAGE);
        	}
     
        }
     
        public void paintComponent(Graphics g)
        {
    	try
        	{
    	    g.drawImage(new ImageIcon("./Res/grass.gif").getImage(), 0, 0, this);
        	}
        	catch(Exception e)
        	{
        	    JOptionPane.showMessageDialog(null, e, "Exception 2", JOptionPane.INFORMATION_MESSAGE);
        	}
        }  
    }
    EDIT2: bon j'ai essayé de m'axer vers une autre direction en signant mon jar pour qu'il puisse avoir accès au disque (avant je pensais qu'avec appletviewer y avait tout les accès mais même pas -_-), mais voila un autre problème... Bon déja j'annonce je génère mon jar avec JCreator, mais je vois pas pourquoi y aurait des problèmes avec ça, ensuite j'utilise la commande pour signer que j'ai trouvé sur ce site (j'en utilisais une autre mais apparement vu que ça marche pas j'essaye celle-là), là tout se passe bien ça me dit:

    The signer certificate will expire within six month
    donc normalement tout s'est bien passé... (avec l'autre déjà il listé tout mes fichiers contenu dans le .jar et marquant "signed").

    bref... ensuite je clique sur mon .html... Et là... rien, pas de certificat quelconque, rien à valider, juste l'applet qui ne marche pas à cause de l'affichage d'images...

    PS: Voila ce que contient mon .html:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <html>
    	<head>
    		<title>Titre de ma fenêtre</title>
    	</head>
    	<body bgcolor="FF6600">
    		<center>
    			<applet
    				code	= "MonPackage.MonApplet"
                                   codebase= "."
    				archive	= "MonArchiveSigne.jar"
    				width	= "800"
    				height	= "800"
    				>
    			</applet>
    		</center>
    	</body>
    </html>

  2. #2
    Invité(e)
    Invité(e)
    Dernière modification par Ricky81 ; 22/05/2008 à 19h49. Motif: bon lien

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut
    Le problème, c'est que comme je l'ai déjà dit dans mon premier post, j'ai signé mon applet et pourtant quand je lance le .htm y a aucun certificat, et j'ai un carré blanc à la place de mon applet...

    Je vois pas où j'ai fait une erreur... quand je génère le .jar apparemment tout se passe bien car quand je génère j'ai, pour chacun de mes fichier une ligne comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajout : D:/Créations/Projets/TPLD_Game_Editor/Src/view/ViewObject.java (entrée = 2162) (sortie = 843) (61% compressés)
    Donc la génération à l'air bonne...

    Ensuite quand je signe le jar tout se passe bien ça me dit juste que la signature expirera dans 6mois. Quand je vérifie que le jar est bien signé j'ai un listing de tout mes fichiers avec un rappel des informations sur le certificat et ils sont tous noté en "sm" ce qui veut dire qu'ils sont signé et qu'ils sont dans le manifest.

    Je vois vraiment pas d'où peut venir le problème... J'ai essayé de lancer le .htm avec Firfox, puis avec IE mais toujorus pas de certificat... J'ai déja mis le code dans le .htm sur mon premier post mais je pense qu'il est bon bien que je ne comprenne pas trop ce qu'est le codebase (Mais normalement ça n'a rien à voir puisqu'il doit demander le certificat avant de lancer l'applet...).

    EDIT:

    Au cas où voila la classe de mon applet mais je pense pas qu'elle ai un quelconque problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    package view;
     
    import javax.swing.*;
    import java.awt.*;
    import ctrl.CtrlGameEditor;
     
    public class ViewGameEditor extends JApplet
    {
    	private static final long serialVersionID = 1L;
    	private JScrollPane uiCanvas, uiObjects, uiProperties, uiScriptPanel;
    	private CtrlGameEditor myEditor;
    	private JPanel contentCanvas, contentObjects;
    	private JButton bouton;
        private Container content;
        private JSplitPane middleSplit, leftSplit, rightSplit;
     
    	private Container createContent()
    	{
    		content = getContentPane();
     
    		contentCanvas = new JPanel();
    		contentCanvas.add(new ViewCanvas(myEditor.getCanvas()));
    		uiCanvas = new JScrollPane(contentCanvas);
    		uiCanvas.setBorder(BorderFactory.createLoweredBevelBorder());
    		uiCanvas.setLayout(new ScrollPaneLayout.UIResource());
    		uiCanvas.setPreferredSize(new Dimension(500,500));
     
    		uiScriptPanel = new JScrollPane();
    		uiScriptPanel.setBorder(BorderFactory.createLoweredBevelBorder());
    		uiScriptPanel.setPreferredSize(new Dimension(500,300));
     
    		leftSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, uiCanvas, uiScriptPanel);
    		leftSplit.setResizeWeight(0.70);
    		leftSplit.setDividerSize(5);
     
    		contentObjects = new JPanel();
    		contentObjects.add(new ViewObject("lol","mdr"));
    		uiObjects = new JScrollPane(contentObjects);
    		uiObjects.setBorder(BorderFactory.createLoweredBevelBorder());
    		uiCanvas.setLayout(new ScrollPaneLayout.UIResource());
    		uiObjects.setPreferredSize(new Dimension(200,200));
     
    		uiProperties = new JScrollPane();
    		uiProperties.setBorder(BorderFactory.createLoweredBevelBorder());
    		uiProperties.setPreferredSize(new Dimension(200,200));
     
    		rightSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, uiObjects, uiProperties);
    		rightSplit.setResizeWeight(0.70);
    		rightSplit.setDividerSize(5);		
     
    		middleSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, leftSplit, rightSplit);
    		middleSplit.setResizeWeight(0.70);
    		middleSplit.setDividerSize(15);
    		content.add(middleSplit);
     
    		return content;
    	}
     
    	public void setNewCanvasSize(int height, int width, int boxHeight, int boxWidth)
    	{
    		myEditor.setNewCanvasSize(height, width, boxHeight, boxWidth);
    	}
     
        private void initApplet()
    	{
        	setContentPane(createContent());
        	setJMenuBar(new ViewMenuBar(this));
        	setVisible(true);
    	}
     
    	public void init()
        {
        	try
        	{
    		   UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    		}
    		catch (Exception e) {e.getStackTrace();}
            myEditor = new mod.ModGameEditor();
            initApplet();
     
        }
    }

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    Regarde au niveau de tes navigateurs parfois il y a des options à régler sinon je ne vois pas trop

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut
    Y a pas moyens d'exécuter l'application en local pour avoir tout les droits... ou de mettre tout les droits à l'appletviewer? Même si pour le moment ça marcherai pas sur le net, juste pour avoir les droits et pouvoir continuer, parce que là je suis bloqué à mort...

    Bon, apparemment l'applet a tout les droit sur son dossier et les sous-dossier qui y sont associés (ça parait logique vu qu'il a tous les droits sur le serveur) donc je vais me débrouiller comme ça pour le moment je verrai ensuite pour ce problème.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut
    Bon je continu à m'aventurer sur la voie sinueuse de la signature d'applets. Peut-être que ça n'affiche pas de certificats car je n'ai pas mis sur un serveur, mais pourtant si je met mes fichiers dans le "www" de WAMP, que j'ouvre local host en ayant activé tout les services WAMP c'est comme si c'était sur un serveur non!? Je devrais afficher le certificat... Pourrais-je avoir de l'aide de ce coté là? J'ai télécharger apache et en l'installant je lui ai dit "nom de domaine: Localhost" Mais pareil ça marche toujours pas... Franchement je vois pas comment faire, j'ai vraiment du zapper un truc. Peut-être faut-il le mettre sur un vrai nom de domaine (je vois pas la différence avec mon localhost si y a wamp activé...)

    Merci d'avance pour vos réponses

    EDIT:
    C'EST BON!!!!!

    Je savait bien que je devais aps me fier à JCreator pour faire mes .jar, il construisais mes .jar avec les .java... J'ai donc fait un .jar en manuel avec mes .class je l'ai signé, je l'ai mis sur localhost en activant apache, et c'est bon!!!! Mais maintenant nouveaux problèmes (sans ça la programmation serait tout de suite moins amusante ), la classe JFileChooser ne fait rien... même pas d'exceptions, juste rien... Mais bon, le fait qu'il y ai la cryptographie c'est déja un grand pas en avant!

    EDIT2:
    C'est bon cette fois tout est réglé, c'était vraiment un truc bête, ça fou les boules d'y avoir passer autant de temps mais bon^^.

    Donc pour ceux qui chercherons le problème peut venir que de 3 choses:
    1- le jar est pas sur un serveur (en fait je sais même pas si c'est important ça^^).
    2- le jar est pas signé (utiliser "jarsigner -verify -verbose votreJar.jar" pour vérifier).
    3- le jar est mal construit (JCreator me faisait un .jar avec des .java :s).


    Donc si vous avez le même problème vérifiez ces 3 choses et ça devrait marcher
    Et dans tout les cas l'applet a les droits sur son répertoires et les repertoires sous-jacents. Pour le JFileChooser il faut obligatoirement que l'applet soit signé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JApplet JButton raffraichissement Image
    Par perrinpotez dans le forum NetBeans
    Réponses: 2
    Dernier message: 29/03/2010, 10h32
  2. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  3. Affichage image dans un JApplet
    Par Revan dans le forum 2D
    Réponses: 6
    Dernier message: 08/01/2008, 20h15
  4. Image dans JApplet
    Par motorenshi dans le forum Applets
    Réponses: 2
    Dernier message: 31/01/2007, 10h02
  5. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo