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

Java Discussion :

Telecharger classe Java 6


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Par défaut Telecharger classe Java 6
    Bonjour,

    je developpe actuellement une application sous java 1.4, mais j'aimerais utiliser une fonctionnalité ( les Splash screens) présente seulement depuis java 6. Est-il possible de télécharger séparement la classe correspondante, et de l'inclure dans mon projet ? Si oui, comment ? Si non, existe-t-il une autre possibilité d'utiliser cette classe ?
    Sinon je me resignerai à faire un splash screen sans cette classe, mais j'aimerais tant qu'à faire éviter.

    Merci d'avance

    Cordialement

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    Au sein d'une VM 1.4, tu ne pourras pas faire tourner une classe 1.6, qui a été compilé différement et utilises certainement des fonctionnalités non gérées par java 1.4.
    De plus, il est tout de même rare qu'une classe ne dépende d'aucunes autres, donc ne pense pas récupérer une seule classe dans des cas semblables.

    Après, je n'ai jamais eu affaire à de splash screens, donc je ne saurais pas de donner de pistes.

    Bonne chance.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Aucune réponse à t'apporter a priori, ce genre de problématique n'a qu'une solution : essayer !

    Donc télécharge le JDK 6 avec le source, extrais la classe SplashScreen du source, utilise la puis vois si tu as des problèmes de dépendances. Si tu en as (probablement), continue à intégrer les classes dépendantes, mais tu auras surement aussi des problèmes de codage spécifique à la JDK 6. Une fois résolus tu pourras peut-être utiliser directement cette classe.

    Le problème (insoluble) que tu risques de rencontrer est l'utilisation par cette classe de code compilé nativement (donc dépendant de l'OS utilisé). Dans ce cas plus d'autre solution : redévelopper la fonction, qui est simplissime du reste.

    En conclusion : le mieux semble être de redévelopper la fonction.

    Et comme je suis sympa (et que je quitte demain la boîte) je te file le code qu'on utilise nous sur notre projet en 1.4 pour faire un splash screen tout-à-fait honorable :

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    package com.tonprojet.splashscreen;
     
    import java.awt.AWTException;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.MediaTracker;
    import java.awt.Robot;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.Timer;
    import java.util.TimerTask;
     
    import javax.imageio.ImageIO;
    import javax.swing.JWindow;
     
    import org.apache.log4j.Logger;
     
    import com.tonprojet.utilitaire.PathTools;
     
    public class SplashScreen extends JWindow
    {
    	Logger log = Logger.getLogger(this.getClass());
     
    	private BufferedImage image;
     
    	public SplashScreen(String fileName, long time)
    	{
    		super();
     
            // On recherche d'abord l'image sur le disque
            // Si on ne la trouve pas, on regarde dans le classpath
            URL urlImage = null;
     
            // Recherche sur le disque
            // Il faut préciser que l'image est un chemin relatif, d'où le . devant
            File fileImage = new File(PathTools.getPath("."+fileName));
            if (fileImage != null && fileImage.exists())
            {
                try
                {
                    urlImage = fileImage.toURL();
                }
                catch (MalformedURLException ignore)
                {
                }
            }
            if (urlImage == null)
            {
                // Recherche dans le classpath
                urlImage = getClass().getResource(PathTools.getPath(fileName));
            }
     
    		try
    		{
    			image = ImageIO.read(urlImage);
    			setSize(new Dimension(image.getWidth(), image.getHeight()));
    			setLocationRelativeTo(null);
    			setVisible(true);
    		}
    		catch (IOException exception)
    		{
    			log.error("Erreur lors de l'affichage du splash screen", exception);
    		}
    		if (time > 0)
    		{
    			TimerTask dispose = new TimerTask()
    			{
    				public void run()
    				{
    					dispose();
    				}
    			};
    			Timer timer = new Timer();
    			timer.schedule(dispose, time);
    			try
    			{
    				Thread.sleep(time);
    			}
    			catch (InterruptedException exception)
    			{
    				log.error("Erreur lors de l'affichage du splash screen", exception);
    			}
    		}
    	}
    	public SplashScreen(String file)
    	{
    		this(file, 0);
    	}
    	public void paint(Graphics g)
    	{
    		if (image.getColorModel().hasAlpha())
    		{
    			try
    			{
    				Robot robot = new Robot();
    				BufferedImage fond = robot.createScreenCapture(getBounds());
    				MediaTracker tracker = new MediaTracker(this);
    				tracker.addImage(fond, 0);
    				tracker.waitForAll();
    				g.drawImage(fond, 0, 0, null);
    			}
    			catch (AWTException e)
    			{
    				log.error("Erreur lors de l'affichage du splash screen", e);
    			}
    			catch (InterruptedException exception)
    			{
    				log.error("Erreur lors de l'affichage du splash screen", exception);
    			}
    		}
    		g.drawImage(image, 0, 0, null);
    	}
    }
    PathTools n'est qu'une classe utilitaire à la con pour résoudre des chemins avec des parties variables, à adapter pour ton cas donc.

    EDIT : ne m'en demande pas plus sur le fonctionnement de cette classe, je ne l'ai jamais utilisée !!

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Par défaut
    Merci beaucoup pour vos réponses !
    Je vais essayer de suite avec ta classe mixouille.

    Merci encore !

  5. #5
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Dans le cas du splashscreen, tu ne pourras pas récupérer le code venant de java 6. En effet cette classe est gérée de manière particulière par la machine virtuelle pour permettre l'affichage du splash-screen spécifié dans le manifest avant même que les classes java nécessaire au démarrage de l'application ne soient chargées.

    Il faudra implémenter toi même un JWindow comme dans l'exemple a mixtouille ou une JFrame avec un setUndecorated(true). Par contre ce type de splash screen devra attendre qu'un minimum de classes aient été chargées pour pouvoir être affiché. Il ne sera pas donc tout a fait instantané.

    Si ce délai te gène, un autre solution est d'utiliser un programme lanceur qui affiche un splashscreen, démarre ton application Java et cache le splashscreen une fois l'application démarrée.

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

Discussions similaires

  1. [Tomcat]Executer une classe JAVA au demarrage de TOMCAT
    Par dehbi dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 18/08/2005, 14h23
  2. Réponses: 13
    Dernier message: 25/03/2005, 11h00
  3. convertisseur de classe C++ vers classe Java ?
    Par novice12 dans le forum C++
    Réponses: 3
    Dernier message: 16/12/2004, 21h37
  4. classes java [débutant]
    Par glurps dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/06/2003, 15h57
  5. Inserer des classes java existantes
    Par 2000 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 20/03/2003, 12h35

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