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

avec Java Discussion :

convertir applet, awt, mediatracker dans jre23


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    chômage
    Inscrit en
    Avril 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : chômage
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2025
    Messages : 4
    Par défaut convertir applet, awt, mediatracker dans jre23
    hello, je voulais lancer un ancien projet après avoir installé le dernier eclipse et je comprends que applet et consorts sont désuets, qu'il faudrait que je change la librairie mais je préfère me faire un petit exercice de MAJ
    Existe-t-il un tuto me permettant de faire cette démarche?
    J'utilisais les applet pour rapidement afficher dans une fenêtre graphique, vous avez un tuto pour débutant pour obtenir le même résultat?

    Au besoin, j'ai donc besoin de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import java.awt.*;
    import javax.imageio.ImageIO;
    public class go extends Frame implements Runnable
    PixelGrabber Px;
    Graphics gr;
    Image I;
    MediaTracker myTracker=new MediaTracker(this);
    Font F = new Font("TimesRoman",1,14);

  2. #2
    Membre à l'essai
    Homme Profil pro
    chômage
    Inscrit en
    Avril 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : chômage
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2025
    Messages : 4
    Par défaut
    import javax.swing.*;
    retourne une erreur aussi. Ben dites donc, c'est la guerre aux librairies graphiques?

  3. #3
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    Par défaut
    Salut,

    Il faudrait peut être mettre un code un peu plus complet et utiliser la balise code.

    Mais le 'import javax.swing.*' ne devrait pas en théorie poser de problèmes jusque la. (apres "un erreur" c'est un peu vague
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre à l'essai
    Homme Profil pro
    chômage
    Inscrit en
    Avril 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : chômage
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2025
    Messages : 4
    Par défaut
    la structure du .java principal est la suivante, classique
    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
     
    package attraction;
     
    import java.applet.*;
    import java.awt.*;
    import java.lang.Math;
     
    import javax.imageio.ImageIO;
    import java.io.IOException;
    import java.util.HashMap;
    import java.io.File;
     
    public class go extends Applet implements Runnable
    {
    PixelGrabber Px;
    Graphics gr;
    Image Imagecachée;
    MediaTracker myTracker=new MediaTracker(this);
    Font F = new Font("TimesRoman",1,14);
     
    public void init()
    {
    largeurEcran = 400;
    hauteurEcran = 400;
    setBackground(Color.WHITE);
    Imagecachée = createImage(largeurEcran,hauteurEcran);
    gr = Imagecachée.getGraphics();
    }
     
    public void run(){}
     
    public void paint(Graphics g)
    {
    	gr.clearRect(0,0,largeurEcran,hauteurEcran);
     
    //opérations graphiques, affichées dans la fenêtre
     
    	g.clearRect(0,0,largeurEcran,hauteurEcran);
    	g.drawImage(Imagecachée,0,0,this);
    }
    }
    ça me retourne, avec le jre1.8
    Erreur : impossible de trouver ou de charger la classe principale sun.applet.AppletViewer
    Causé par : java.lang.ClassNotFoundException: sun.applet.AppletViewer

    avec le jre23, si je lance un programme vide avec import javax.swing.*; ou import java.awt.*;, pas de compilation possible, ces package sont 'inaccessibles'

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Oui d'accord mais avant tu parlais de Frame, maintenant tu parles d'Applet... 'Faudrait peut-être se concentrer sur un truc, là.

    En l'occurrence les applets c'est bien fini alors ce serait un peu trop chercher la difficulté... Mais tu pourrais faire un simple JFrame comme il en existe encore des exemples. Là le jdk/jre 1.8 n'aura rien à redire... Même si ça commence à faire vieux.

    Pour utiliser awt/swing dans les versions de Java récentes, il faut démarrer le programme en spécifiant l'utilisation du module java.desktop. En gros il faut ajouter cette option dans la ligne de commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java --add-modules java.desktop la.classe.de.depart
    Ou alors si tu te le sens, apprendre à faire que ton propre programme soit un module, et déclarer qu'il a besoin de java.desktop
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    Par défaut
    Pour completer un peu ce que Thelvin disait.

    En effet, si tu crées un projet java sous eclipse comme j'ai pu comprendre le truc ne fonctionnera pas tel quel. (hors projet maven qui va bien dés le départ et que je te conseil)

    Si tu veux que ça marche alors tu dois editer ton fichier module-info et y ajouter un requires java.desktop; comme dits précédemment de manière un peu plus sibylline par Thelvin.

    Mais Eclipse peut aussi le faire comme ceci automatiquement aussi si tu ne t'en sorts pas (merci les modules :

    Nom : PNG.png
Affichages : 24
Taille : 92,5 Ko

    Et normalement après tu pourrais facilement faire ceci :

    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
    package attraction;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.image.BufferedImage;
     
    public class Go extends JPanel implements Runnable {
        private BufferedImage Imagecachee;
        private Graphics gr;
        private int largeurEcran = 400;
        private int hauteurEcran = 400;
        private Thread animator;
     
        public Go() {
            setPreferredSize(new Dimension(largeurEcran, hauteurEcran));
            setBackground(Color.WHITE);
            Imagecachee = new BufferedImage(largeurEcran, hauteurEcran, BufferedImage.TYPE_INT_RGB);
            gr = Imagecachee.getGraphics();
        }
     
        public void addNotify() {
            super.addNotify();
        }
     
     
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            gr.clearRect(0, 0, largeurEcran, hauteurEcran);
            g.drawImage(Imagecachee, 0, 0, this);
        }
     
        public static void main(String[] args) {
            JFrame frame = new JFrame("Go Applet");
            Go go = new Go();
            frame.add(go);
            frame.pack();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
     
    	@Override
    	public void run() {
    		// TODO ???
    	}
    }
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 897
    Billets dans le blog
    54
    Par défaut
    Le principal soucis a portage du code n'est sans doute effectivement pas le retrait de Applet mais plutôt les 10+ années de changement et de nouvelle fonctionnalités qui séparent le JDK 8 et le JDK 23 et les IDE actuelles avec entres autres la modularisation et de nouvelles pratiques de développement (Maven, Gradle - enfin du moins pour ceux chez qui ca marche OK).

    Pour le reste, Eclipse reste Eclipse, certaines choses sont plus faciles a mettre en place, ou intuitives et moins prises de tête dans les IDE concurrentes mais moins répandues (IDEA, NetBeans).

    Si ton projet est non-modulaire (il n'existe pas de fichier module-info.java a la racine de tes sources) : c'est sensé fonctionné directement (Swing est trouvé directement)

    Si ton projet est modulaire (il existe un fichier module-info.java a la racine de tes sources) : il te faut éditer ce fichier et rajouter une ligne indiquant que tu as besoin du module java.desktop, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    module swingtest {
    	requires java.desktop;
    	exports test.hello;
    }
    Ici la directive exports permet l’accès au package contenant ma classe de lancement de l'application.

    EDIT - quelques précisions supplémentaires :
    * BufferedImage.TYPE_INT_RGB permet de créer des images opaques (sans partie transparente ou translucide).
    * BufferedImage.TYPE_INT_ARGB (au lieu de BufferedImage.TYPE_INT_RGB) permet de créer des images transparentes (avec des parties transparentes ou translucides).
    * gr.clearRect(0, 0, largeurEcran, hauteurEcran); a tendance a dessiner un gros paté noir. Il peut donc être intéressant de faire a la place ou après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gr.setColor(couleurDeFond);
    gr.fillRect(0, 0, largeurEcran, hauteurEcran);
    avec couleurDeFond mis a la couleur qu'on veut (ex : Color.WHITE ou une couleur transparente new Color(0) suivant le type d'image qu'on aura créé)
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Membre à l'essai
    Homme Profil pro
    chômage
    Inscrit en
    Avril 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : chômage
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2025
    Messages : 4
    Par défaut
    Citation Envoyé par wax78 Voir le message
    j'ai retenu ta solution, un copié-collé et ça marche du premier coup

    merci tout le monde!

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

Discussions similaires

  1. [Débutant] image en background d'une Applet AWT
    Par xtofer dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 18/07/2006, 13h15
  2. Convertir un fichier .jar dans un autre format.
    Par Strappal dans le forum Java ME
    Réponses: 2
    Dernier message: 29/06/2006, 19h32
  3. [Applet][Débutant] .jar dans php
    Par the_guitariste dans le forum Applets
    Réponses: 14
    Dernier message: 24/05/2006, 14h39
  4. [AWT] Image dans un Panel
    Par -Jolan- dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 29/12/2005, 15h57
  5. Réponses: 10
    Dernier message: 29/06/2004, 22h25

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