import java.awt.Color; public class EssaiFenetre { static MaFenetre fenetre1,fenetre2; public static void main(String[] args) { fenetre1=new MaFenetre(); fenetre2=new MaFenetre(); fenetre1.setTitle("Première fenêtre"); fenetre1.setLocation(200,200); fenetre1.panneau_fond.setBackground(new Color(150,0,150)); fenetre1.changeTexte(); fenetre2.setTitle("Deuxième fenêtre"); fenetre2.setLocation(600,400); fenetre2.panneau_fond.setBackground(new Color(0,150,150)); } }Ce programme crée deux instances différentes de MaFenetre, appelées fenetre1 et fenetre2, puis modifie l'emplacement et l'aspect de chacune.
De manière générale les méthodes et les variables non static d'une classe, peuvent être appelées en faisant précéder leur nom de celui de l'instance qui les possède, suivi d'un point.
Les méthodes et les variables static d'une classe peuvent être appelées depuis une autre classe en faisant précéder leur nom de celui de la classe qui les possède, suivi d'un point.
En exécutant la classe Generateur, une instance de Clone est créée. Chaque instante de Clone contient un bouton (B1) déclenchant la création d'une nouvelle instance de Clone (anonyme).
A chaque création d'une instance de Clone, la variable static numero de la classe Generateur est incrémentée, grâce à la ligne Generateur.numero+=1; qui se trouve à la fin du constructeur de Clone.
Exemple : créer un nouveau projet java appelé "clonage". Y ajouter une classe exécutable appelée Generateur, contenant le code
package clonage;
public class Generateur {
static int numero=0;
public static void main(String[] args) {
new Clone();
}
}
Ajouter également une classe non exécutable appelée Clone, dérivant de JFrame, contenant le code
package clonage;
import javax.swing.*;
import java.awt.event.*;
public class Clone extends JFrame {
Clone(){
super();
JPanel fond=new JPanel();
add(fond);
JLabel nom=new JLabel("Clone n°"+Generateur.numero);
fond.add(nom);
JButton B1=new JButton("Clonage!");
B1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new Clone();
}
});
fond.add(B1);
JButton B2=new JButton("Stop!");
B2.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e){
System.exit(0);
}});
fond.add(B2);
setVisible(true);
pack();
setLocation(getWidth()*(Generateur.numero%8),getHeight()*(Generateur.numero/8));
Generateur.numero+=1;
}
}
La valeur de cette variable numero est aussi utilisée pour positionner la fenêtre créée, de sorte que toutes les instances de Clone ne se superposent pas au même endroit (ligne setLocation(getWidth()*(Generateur.numero%8),getHeight()*(Generateur.numero/8)); )
La valeur de numero est utilisée également à l'intérieur du texte du JLabel nom, de manière à figurer dans la fenêtre.