Bouton qui centre JWindows

Résolu
Aristeas Messages postés 24 Date d'inscription lundi 9 octobre 2000 Statut Membre Dernière intervention 17 avril 2006 - 30 mars 2005 à 20:56
hades5 Messages postés 25 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 5 juin 2007 - 1 avril 2005 à 01:54
lu,



Tout d'abord j'ai chercher dans le forum et j'ai pas trouvé ce que je cherchais ;o)



En fait, je cherche a savoir comment on fait pour rappeller une
fenêtre, une Jwindow, avec un écouteur (actionlistener) qui me
permettrait de centrer la fenêtre, par exemple.



J'ai essayer avec divers appel genre getRootPane(), ... mais rien.



Par exemple dans l'exemple suivant je ne sais pas quoi mettre (XXXXX) pour pouvoir centrer ma fenetre2 quand je click sur un bouton avec l'Ecouteur2.



public static void main(String args[])

{

Test2 fenetre1 = new Test2();

Test2 fenetre2 = new Test2();

Test2 fenetre3 = new Test2();

...................

}



class Ecouteur2 implements ActionListener {

public void actionPerformed(ActionEvent e){

Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

XXXX.setLocation((screen.width - XXXXX.getSize().width)/2,(screen.height - XXXXX.getSize().height)/2);



setVisible(true);

}

}





@+

3 réponses

hades5 Messages postés 25 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 5 juin 2007
1 avril 2005 à 01:54
Salut,



Juste en me basant sur l'exemple que tu m'as fourni...

Je remplace les JWindow pour des raisons pratiques... mais si tu
laisses tes JWindow, le résulat sera le même sauf il faudra mettre en
commentaire la ligne suivante dana le code :

// fenetre1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;



Par contre, je ne saurais pas adapter l'exemple si plusieurs boutons
utilisent le même actionneur. Autrement il faudra implenter
l'actionneur à la fenêtre et dans ce cas là dans la méthode performed (
... )

utiliser

if ( e.getSource() == bouton1 )

{

Test2 fenetre1 = new Test2() ;


afficher ( fenetre1 ) ;

}

if ( e.getSource() == bouton2 )

{

Test2 fenetre2 = new Test2() ;


afficher ( fenetre ) ;

}

etc...





import java.awt.*;

import javax.swing.* ;

import java.awt.event.* ;



public class Test2 extends JFrame

{

JButton B1 = new JButton ("Centrer");





public Test2(){

this.getContentPane().add(B1);

B1.addActionListener(new Ecouteur1());




this.setSize(600,600);
//////////LARG, HAUT

this.show();

}





public static void main(String args[])

{

Test2 fenetre1 = new Test2() ;

}





class Ecouteur1 implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

Test2 fenetre1 = new Test2() ;

afficher ( fenetre1 ) ;

}



public void afficher ( JFrame fenetre1 )

{



//Centrer la fenêtre

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

Dimension frameSize = fenetre1.getSize();

if (frameSize.height > screenSize.height)

{

frameSize.height = screenSize.height;

}

if (frameSize.width > screenSize.width)

{

frameSize.width = screenSize.width;

}


fenetre1.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);

fenetre1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;

}



}

}
3
hades5 Messages postés 25 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 5 juin 2007
31 mars 2005 à 00:37
Salut ,



Voici un exemple d'une fenêtre à centrer... tu peux t'inspirer pour l'adapter à ton utilisation.

JFrame frame = new JFrame ( ) ;

//Centrer la fenêtre

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize() ;

Dimension frameSize = frame.getSize() ;

if (frameSize.height > screenSize.height)

{

frameSize.height = screenSize.height ;

}

if (frameSize.width > screenSize.width)

{

frameSize.width = screenSize.width ;

}

frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2) ;

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;

frame.setVisible(true) ;
0
Aristeas Messages postés 24 Date d'inscription lundi 9 octobre 2000 Statut Membre Dernière intervention 17 avril 2006
31 mars 2005 à 06:56
lu,



En fait mon problem c'est que je ne peux pas utiliser le nom de ma fenetre (par exemple fenetre1) car il ne reconnait pas le nom de la frame lorsque je mets le code dans une class actionlistener.



Je mets un exemples plus complet du code pour mieux expliquer.



Essaie le et tu verras

En fait, je ne sais pas quoi mettre à la place des XXXXX

Dans les autres languages de programmation on a souvent root. ou
parent. pour faire référence à la "frame d'origine ou active" mais là
ça ne fonctionne pas avec Java.






public class Test2 extends JWindow

{

JButton B1 = new JButton("Centrer");





public Test2(){

this.getContentPane().add(B1);

B1.addActionListener(new Ecouteur1());




this.setSize(600,600);
//////////LARG, HAUT

this.show();

}







public static void main(String args[])
{


Test2 fenetre1 = new Test2();
}





class Ecouteur1 implements ActionListener {

public void actionPerformed(ActionEvent e){



Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();



XXXXX.setLocation((screen.width - XXXXX.getSize().width)/2,(screen.height - XXXXX.getSize().height)/2);

setVisible(true);


}
}

}





@+
0
Rejoignez-nous