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

Interfaces Graphiques en Java Discussion :

SplashScreen qui n'affiche rien ?


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut SplashScreen qui n'affiche rien ?
    Bonjour

    j'ai fait une classe toute simple de SplashScreen pour mon application, mais ca affiche un gros rectangle blanc à la place de l'image que je voudrais afficher...

    Je ne sais pas si ca vient de la manière dont je charge l'image, ou alors de la manière dont je construis.

    Voici mon code :

    Appell du splashScreen :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ImageIcon icon = null;
        	try {
        		URL url = Main.class.getClassLoader().getResource("images/SplashScreen.jpg");
    			BufferedImage image = ImageIO.read(url);
    			icon = new ImageIcon(image);
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
     
    JSplash splash = new JSplash(icon );
    JSplash :

    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
    public class JSplash extends JWindow{
    	private static final long serialVersionUID = 4476349156686881476L;
     
    	//Image de fond
    	private ImageIcon icon = null;
     
    <div style="margin-left:40px">//Dimensions de l'écran</div>	private Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
     
    	public JSplash(ImageIcon icon){
    		super();
     
    		this.icon = icon;
     
    		build();
    	}
     
    	private void build(){
    		int width = icon.getIconWidth();
    		int height = icon.getIconHeight();
     
    		this.setAlwaysOnTop(true);
    		this.setVisible(true);
    		this.setLocation((screen.width-width)/2, (screen.height-height)/2);
    		this.setSize(width, height);
    		this.getContentPane().add(new JLabel(icon));
    	}
     
    	public void dispose(){
    		icon = null;
    		super.dispose();
    	}
    }
    L'erreur doit être toute bête, mais je vois pas ce que c'est

  2. #2
    Membre expérimenté Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Par défaut
    j'aurais fait le setVisible après le setSize :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	private void build(){
    		int width = icon.getIconWidth();
    		int height = icon.getIconHeight();
    		
    		this.setAlwaysOnTop(true);
    		
    		this.setLocation((screen.width-width)/2, (screen.height-height)/2);
    		this.setSize(width, height);
    		this.getContentPane().add(new JLabel(icon));
                    this.setVisible(true);
    	}
    mais bon, t'as surement déjà essayé

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Sinon essayes d'appeler ton splash dans l'event dispatch Thread => d'en faire un thread car tu dois surement réaliser d'autres traiteents qui monopolisent la JVM.

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par sinok
    Sinon essayes d'appeler ton splash dans l'event dispatch Thread => d'en faire un thread car tu dois surement réaliser d'autres traiteents qui monopolisent la JVM.
    Je viens d'essayer de le mettre dans un thread mais ca change rien, par contre, si j'emploie invokeLater(monThread), ca affiche bien quelque chose, mais après mon interface, donc je plus le fermer...

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    créer un séquenceur sur lequel ta JWindow se renseignera pour connaître le moment ou elle doit se fermer?

  6. #6
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Non, j'avais pas essayé, mais ca change rien. Ma fenêtre affiche quelque chose, mais elle affiche une zone blanche, alors que je voudrais qu'elle affiche mon image...

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Sinon tu fais le gros bourrin comme tout le monde et tu dessine ton image sur un panel que tu mettras dans ta JWindow avec un setContentPane(), en plus ça bouffera moins que d'utiliser un ImageIcon + un JLabel

  8. #8
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par sinok
    Sinon tu fais le gros bourrin comme tout le monde et tu dessine ton image sur un panel que tu mettras dans ta JWindow avec un setContentPane(), en plus ça bouffera moins que d'utiliser un ImageIcon + un JLabel
    Je viens d'essayer la méthode bourrin, mais ca ne marche pas mieux... J'ai toujours une fenêtre toute blanche qui arrive à la place de l'image tant attendue.

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bon voilà quelquechose qui marche (tu devras surement faire quelques adatations, mais bon dans l'ensemble ...)
    :

    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
     
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.GraphicsConfiguration;
    import java.awt.Image;
    import java.awt.Window;
    import java.net.MalformedURLException;
    import java.net.URL;
     
    import javax.swing.JFrame;
    import javax.swing.JWindow;
    import javax.swing.SwingUtilities;
     
    import org.jdesktop.swingx.JXImagePanel;
    import org.jdesktop.swingx.JXPanel;
     
    public class MySplash extends JWindow {
    	public MySplash(URL url) {
    		super();
    		initComponents(url);
    		// TODO Auto-generated constructor stub
    	}
     
    	public MySplash(GraphicsConfiguration arg0,URL url) {
    		super(arg0);
    		initComponents(url);
    		// TODO Auto-generated constructor stub
    	}
     
    	public MySplash(Frame arg0,URL url) {
    		super(arg0);
    		initComponents(url);
    		// TODO Auto-generated constructor stub
    	}
     
    	public MySplash(Window arg0,URL url) {
    		super(arg0);
    		initComponents(url);
    		// TODO Auto-generated constructor stub
    	}
     
    	public MySplash(Window arg0, GraphicsConfiguration arg1,URL url) {
    		super(arg0, arg1);
    		initComponents(url);
    		// TODO Auto-generated constructor stub
    	}
     
    	private void initComponents(URL url) {
    		JXImagePanel panel = new JXImagePanel(url);
    		setContentPane(panel);
    	}
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		JFrame f = new JFrame();
    		try {
    			final MySplash splash = new MySplash(new URL("file:///c:/dwn/objet.gif"));
     
    			splash.setSize(new Dimension(600,600));
    			splash.setLocationRelativeTo(null);
    			SwingUtilities.invokeLater(new Runnable(){
     
    				public void run() {
    					// TODO Auto-generated method stub
    					splash.setVisible(true);
    				}}
    			);
    			Thread.sleep(10000);
    			SwingUtilities.invokeLater(new Runnable(){
     
    				public void run() {
    					// TODO Auto-generated method stub
    					splash.setVisible(false);
    				}}
    			);
    			f.setVisible(true);
     
    		} catch (MalformedURLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
     
    	}
     
    }

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

Discussions similaires

  1. [MySQL] Base de donnée qui n'affiche rien
    Par Prince Mch dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 31/01/2008, 16h36
  2. ImageList qui n'affiche rien
    Par blastou dans le forum C#
    Réponses: 5
    Dernier message: 28/08/2007, 18h16
  3. Créer un environnement qui n'affiche rien
    Par xiourf dans le forum Mise en forme
    Réponses: 5
    Dernier message: 27/05/2007, 17h59
  4. Programme qui n'affiche rien
    Par Premium dans le forum OpenGL
    Réponses: 2
    Dernier message: 03/12/2006, 21h43
  5. [LG]Programme qui n'affiche rien
    Par ousunas dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2004, 19h38

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