précédent | suivant | table des matières

JInternalFrame

Sommaire
  1. Constructeurs
  2. Méthodes
  3. Exemple

La classe JInternalFrame permet la création et la gestion de fenêtres internes à un JDesktopPane.

1Constructeurs

JInternalFrame()
Crée une JInternalFrame non redimensionnable, non fermable, non maximisable, non iconifiable et sans titre.
JInternalFrame(String title) 
Crée une JInternalFrame non redimensionnable, non fermable, non maximisable et non iconifiable.
JInternalFrame(String title, boolean resizable) 
 
JInternalFrame(String title, boolean resizable, 
         boolean closable) 
 
JInternalFrame(String title, boolean resizable, 
         boolean closable, boolean maximizable) 
 
JInternalFrame(String title, boolean resizable, 
         boolean closable, boolean maximizable,
         boolean iconifiable) 
 

2Méthodes

JDesktopPane getDesktopPane() 
Retourne le JDesktopPane qui contient cette frame.
 Icon getFrameIcon()
L’icone de la barre de cette frame.
void setFrameIcon(Icon i)
Affecte l'icone de cette frame.
String getTitle() 
Retourne le titre de la frame.
void setTitle(String t)
Affecte le titre de la frame.
Rectangle getNormalBounds()
Retourne les limites de la fenêtre lorsqu'elle n'est pas maximisée
void setNormalBounds(Rectangle r)
Affecte les limites "normales".
boolean isClosable()
Retourne true si la fenêtre est fermable.
void setClosable(boolean b)
 
boolean isClosed()
Retourne true si la fenêtre est fermée.
void setClosed(boolean b)
 
boolean isIconifiable()
Retourne true si la fenêtre est iconifiable.
void setIconifiable(boolean b)
 
boolean  isIcon()
Retourne true si la fenêtre est iconifiée.
void setIcon(boolean b)
 
boolean isMaximizable()
Retourne true si la fenêtre est maximisable.
void setMaximizable(boolean b)
 
boolean isMaximum()
Retourne true si la fenêtre est maximisée.
void setMaximum(boolean b)
 
boolean isResizable()
Retourne true si la fenêtre est redimensionnable.
void setResizable(boolean b)
 
boolean isSelected()
Retourne true si la fenêtre est active
void toBack()
 
void toFront()
 

3Exemple

Un JDesktopPane avec les fonctionnalités :

public class MonDeskTopPane extends JDesktopPane {
   private final int depX = 20, depY = 20;
   private int nbInternalFrame;
   boolean cascade;
   
   public MonDeskTopPane() {
      super();
      nbInternalFrame = 0;
      cascade = true;
   }
   
   public Component add(Component c){
      super.add(c);
      c.setVisible(true);
      ++nbInternalFrame;
      arranger();
      return c;
   }
   
   private void arranger(){
      if( cascade) cascade();
      else mosaique();
   }

   public void cascade(){
      cascade = true;
      // calcul du nombre de frame internes non icones
      nbInternalFrame = lesFrames.length;
      int n = nbInternalFrame;
      for( int i = 0 ; i < nbInternalFrame; ++i)
         if(lesFrames[i].isIcon() ) --n;
      for( int i = 0, j = n-1 ; i<nbInternalFrame; ++i, --j)
        if( !lesFrames[i].isIcon() ) 
         lesFrames[i].setBounds(j*depX, j*depY, getWidth()/3, getHeight()/3);
   }

   public void mosaique(){
      cascade = false;
      JInternalFrame [] lesFrames = getAllFrames();
      // calcul du nombre de frame internes non icones 
      nbInternalFrame = lesFrames.length;
      int n = nbInternalFrame;
      for( int i = 0 ; i < nbInternalFrame; ++i) 
         if(lesFrames[i].isIcon()) --n;
      // bas permet de laisser de la place pour que les icones
      // soient visibles en bas de fenêtre 
      int bas = 0;
      if(n != nbInternalFrame) bas = 30;
      // mise en mosaïque
      // calcul du nombre de colonnes 
      if(n == 0) return;
      int nColonnes = (int)Math.sqrt(n), nLignes; 
      if(n!=nColonnes*nColonnes)++nColonnes;
      // calcul du nombre de lignes
      if((n-1)/nColonnes+1<nColonnes) nLignes = nColonnes-1;
      else nLignes = nColonnes;
      int dx = getWidth()/nColonnes;
      int dy = getHeight()/nLignes - bas;
      int k = 0;
      for( int i = 0 ; i <nColonnes; ++i)
         for( int j = 0; j<nColonnes && k<n; ++j, ++k)
            lesFrames[i*nColonnes+j].setBounds(j*dx, i*dy, dx, dy);
   }
   
   void toutIconifier(){
      JInternalFrame [] lesFrames = getAllFrames();
      try{
         for( int i = 0; i<lesFrames.length; ++i)
            lesFrames[i].setIcon(true);
      }catch(PropertyVetoException pve){}
   }
   
   void toutFermer(){
      JInternalFrame [] lesFrames = getAllFrames(); 
      try{
         for( int i = 0; i<lesFrames.length; ++i)
            lesFrames[i].setClosed(true);
      }catch(PropertyVetoException pve){}
   }
}

haut de la page