Image qui cache ma progressBar

kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 - 3 sept. 2004 à 10:40
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 - 10 sept. 2004 à 12:20
Bonjour a tous,

Je sens que ca ne va peut etre pas plaire a tout le monde car ils vont penser que l'on pose toujours les memes questions.

En effet mon probleme est que j'affiche une image dans un jwindow et je voudrais afficher par dessus une JProgressBar.
Seulement, mon image s'affiche bien mais ma barre de progression ne s'affiche pas.
J'ai regarde sur le forum les gens qui avait un peu pres le meme pb mais je n'arrive pas a faire fonctionner mon appli.

voici mon code:

public class FrameIntro extends JWindow {
BorderLayout borderLayout1 = new BorderLayout();
JPanel jContentPanel = new JPanel();
JProgressBar jProgressBar1 = new JProgressBar();
ImageCanvas img;
GridBagLayout gridBagLayout1 = new GridBagLayout();

public FrameIntro() {
try {
jbInit();
}
catch(Exception ex) {
ex.printStackTrace();
}
}

void jbInit() throws Exception {
img = new ImageCanvas("JComm_on/Images/cortomaltese.jpg", 400, 300);
this.getContentPane().setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
jProgressBar1.setOrientation(JProgressBar.HORIZONTAL);
jProgressBar1.setEnabled(true);
jProgressBar1.setOpaque(true);
jProgressBar1.setStringPainted(true);
jContentPanel.setLayout(gridBagLayout1);
jContentPanel.setBorder(BorderFactory.createLineBorder(Color.black));
jContentPanel.setMaximumSize(new Dimension(400, 300));
jContentPanel.setMinimumSize(new Dimension(400, 300));
jContentPanel.setPreferredSize(new Dimension(400, 300));
this.getContentPane().add(jContentPanel, BorderLayout.CENTER);
jContentPanel.add(jProgressBar1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(137, 87, 144, 87), 125, 0));
jContentPanel.add(img, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0
,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(-1, -1, 0, 0), 401, 301));

jProgressBar1.setVisible(true);
jProgressBar1.setValue(10);
}
}

Voici ma fonction paint de ma classe ImageCanvas :

public void paint(
Graphics g) {
if (img == null) {
super.paint(g);
g.setColor(Color.black);
}
else {
g.drawImage(img, 0, 0, largeur, hauteur, this);
}
}

Bon voila si quelqu'un a solution, je suis pres a ecouter.
Merci d'avance
kobee12
:big)

22 réponses

wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
3 sept. 2004 à 11:05
hummmmmmm en 2 sec pourquoi en faisant un g.drawImage(img...) tu fais pas un super.paint(g) apres?
0
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 1
3 sept. 2004 à 11:44
Parce que si je le fait l'image ne s'affiche pas.

Mais de toute facon j'ai trouve une solution. En fait ma classe ImageCanvas m'affichait bien mon image dans une nouvelle fenetre et ma JprogressBar s'affichait dans une autre mais qui n'apparaissait pas car je n'avait pas fait setvisible(true).

J'ai tout simplement changer extends Canvas par extends JPanel
dans ma classe ImageCanvas.

Il me reste encore un petit soucis.
Je veux que mon Jwindow s'affiche en premier plan meme quand j'ouvre une autre fenetre.
J'ai essaye frameIntro.toFront(); mais ca ne change rien. J'ai une autre fenetre qui s'ouvre apres et elle se met devant alors que je voudrais qu'elle soit derriere, un peu comme dans nero ou word ou il y une fenetre d'intro.
:big)
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
3 sept. 2004 à 13:13
Par expérience de la chose, il me semble que le toFront fonctionne.
Es tu sur que le delai de ta JWindow n'est pas expiré qd ta JFrame s'affiche ??
Au pire, fais un toBack sur ta JFrame, pour etre sur .

gmi19oj19
0
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 1
3 sept. 2004 à 14:58
Je suis oblige de faire un truc de ce genre :

frameIntro.jProgressBar1.setValue(90);
frameIntro.hide();
frame.setVisible(true);
frameIntro.toFront();
frameIntro.show();
frameIntro.jProgressBar1.setValue(100);

sachant que j'ai deja mis plus haut :
frameIntro.toFront();
frameIntro.show();

Donc je comprends pas d'ou vient le pb.
:big)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
3 sept. 2004 à 16:39
en reprenant la méthode de Wargre
mais en mettant le background du controleur sur une couleur transparente (new Color(0, 0, 0, 0) par exemple) ?
ca donne quoi ?

Dobeliou
[Il ne faut jamais jouer à saute-mouton avec une licorne]
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
3 sept. 2004 à 16:41
oups : du container, pas controleur ;-p

Dobeliou
[Il ne faut jamais jouer à saute-mouton avec une licorne]
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
3 sept. 2004 à 17:06
utilises un thread pour l'affichage de ta progress bar.
tu mets la JProgressBar en indeterminate (tel celles de Windaube), et avec un Thread, tu la hide au bout d'une certaine durée.

Si nécessaire , je te refile la classe que j'utilise pour faire la même chose que toi (au détail près qu'elle ne gère que le splash screen)

gmi19oj19
0
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 1
4 sept. 2004 à 20:21
Je veux bien que tu me la refiles ca me permettra de comparer.
merci
:big)
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
5 sept. 2004 à 12:25
Voili voilou :

import java.awt.*;
import javax.swing.*;

public class Chargement extends JWindow implements Runnable{
        int width 100, height 100;
    Toolkit toolkit = Toolkit.getDefaultToolkit() ;

    public Chargement()    {
     this("imageProjet.gif") ;
    }

    public Chargement(String s)    {
       super(new JFrame());
       JProgressBar prog = new JProgressBar();
       prog.setStringPainted(true);
       prog.setIndeterminate(true);
       prog.setString("Chargement ...");
       getContentPane().add(prog,BorderLayout.SOUTH);       
       ImageIcon image = new ImageIcon(getClass().getResource(s));
       getContentPane().add(new JLabel(image), BorderLayout.CENTER);
       //getContentPane().requestFocus();
    }

    public void run()  {
        setLocation (350 , 250) ;
        pack();
        setVisible(true) ;
        hide(5);
        dispose();
    }

    public void hide(int i) {
        try {
            Thread.sleep(i*1000) ;
        }
        catch (Exception e) {//je sais, c'est mal }
        setVisible(false) ;
    }
}


gmi19oj19
0
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 1
6 sept. 2004 à 10:10
Tres sympa!

J'ai toujours un petit soucis que ma fenetre s'affiche devant mon jwindow et ma barre de progreesion.
L'ordre d'affichage :
1 ma barre de chargement
2 mon jwindow (ma barre de chargement est toujours devant, c'est bon)
3 ma fenetre, elle s'affiche devant tout!!( c'est pas bon!)
Je veux que ma fenetre soit derriere.

Je ne veux pas faire de toback() sinon elle se retrouve derriere toutes les fenetres ouvertes et c'est pas mon but. Je veux juste qu'elle soit derriere mon jwindow, qui lui est derriere ma jprogressbar.
en faisant tofront() sur jwindow ca ne change rien parce que ma fenetre s'affiche apres. Y a t il un moyen de choisir laquelle des fenetres doit etre devant?
:big)
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
6 sept. 2004 à 10:53
Fais un toFront() sur ta JFrame, puis un toFront() sur la JWindox, et c'est tout bon (normalement :big) )

gmi19oj19
0
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 1
6 sept. 2004 à 15:44
je comprends rien!!!
voila ce que j'ecris :
FrameIntro frameIntro; // mon jwindow
FrmClient frame; // ma fenetre

frameIntro = new FrameIntro();
frame = new FrmClient(frameIntro);

frameIntro.setVisible(true);

frame.toFront();
frameIntro.toFront();

frame.setVisible(true);

Vu que je veux afficher d'abord mon jwindow et bien il affiche ma fenetre par dessus. Donc je sais pas comment faire.
:big)
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
6 sept. 2004 à 18:08
pace ton frame.setVisible(true) avant les toFront()
car le setVisible() appelle le toFront() (enfin, je suppose, vu qu'une Frame qui s'affiche est automatiquement au premier plan)

gmi19oj19
0
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 1
6 sept. 2004 à 18:17
en faisant comme ca ca s'affiche correctement :
frame.toFront();
frameIntro.toFront();
frame.setVisible(true);
frameIntro.setVisible(true);

mais c'est pas ca que je veux. Je veux afficher FrameIntro avant frame et qu'il reste toujours devant frame.
C'est ca mon probleme.
:big)
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
6 sept. 2004 à 19:43
ba ca existe pas, setAlwaysOnTop dans java.awt.Window ?
mdr

Dobeliou
[Il ne faut jamais jouer à saute-mouton avec une licorne]
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
6 sept. 2004 à 22:11
frameIntro.setVisible(true);
frame.setVisible(true);
frameIntro.toFront();


gmi19oj19
0
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 1
7 sept. 2004 à 09:16
setAlwaysOnTop ca n'existe pas.
En faisant
frameIntro.setVisible(true);
frame.setVisible(true);
frameIntro.toFront();
ca fonctionne pas
Je viens de me rendre compte d'un truc. J'ai fais :
frameIntro.toFront();
frameIntro.setVisible(true);
frame.toBack();
frame.setVisible(true);
et frame ne se met pas en arriere plan, il reste devant; y a un truc qui va pas!!
:big)
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
7 sept. 2004 à 12:29
euh...
setAlwaysOnTop, ca existe dans java.awt.Window !!
mais depuis la 1.5 ;p

tjrs mdr
Dobeliou
[Il ne faut jamais jouer à saute-mouton avec une licorne]
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
7 sept. 2004 à 20:23
@Dobel : comme quoi, vaut mieux pas etre trop mauvaise langue :big)

gmi19oj19
0
kobee12 Messages postés 153 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 31 octobre 2006 1
7 sept. 2004 à 20:47
autant pour moi.
Seulement si je veux continuer la 1.4 je fais comment?
Je crois que je vais etre oblige de rajouter un module en C++ ou de garder mon prog comme il est meme si c'est pas tres propre.
:big)
0
Rejoignez-nous