précédent | suivant | table des matières
|
|
La classe JInternalFrame permet la création et la gestion de fenêtres internes à un JDesktopPane.
Constructeurs
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) |
Mé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() |
Exemple
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){}
}
}