Bonjour,

J'ai une JFrame avec un JDesktopPane et des JinternalFrame dedans.

Ma desktop pane a un boxlayout en vertical qui contient trois box en horizontal.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
public class ComptaDesktopPane extends DefaultDesktopManager
{
...
public ComptaDesktopPane(JComponent[][] a_composants, short[][] a_placements, JComponent a_fenetre)//fenetre c'est mon JDesktopPane
    {
        fenetre = a_fenetre;
        fenetre.setLayout(new BoxLayout(fenetre, BoxLayout.Y_AXIS));
 
        rangees = new RangeeDeFenetres[3];
        rangees[0] = new RangeeDeFenetres(a_composants[0], a_placements[0], (short) 0, this);
        rangees[1] = new RangeeDeFenetres(a_composants[1], a_placements[1], (short) 1, this);
        rangees[2] = new RangeeDeFenetres(a_composants[2], a_placements[2], (short) 2, this);
...
  fenetre.add(rangees[0]);
        fenetre.add(rangees[1]);
        fenetre.add(rangees[2]);
Les box contienne des JInternalFrame. Mes JInternalFrame sont ainsi collées l'une à l'autre et j'ai modifié la méthode resize de JDesktopPane de façon à ce que lorsque l'on en agrandit une, sa voisine rétrécit. Seulement j'ai un probleme avec la methode resize de mes JInternalFrame... Lorsque je veux resizer mes JInternalFrame de façon horizontal pas de probleme... lorsque je veux retrécir une de mes box(une rangee de JInternalFrames), verticalement, ca marche. Seulement je n'arrive pas à les agrandir verticalement. Lorsque je veux agrandir ma JInternal Frame, la méthode resize n'est pas appelée. Je crois que le probleme vient du fait que l'écoute de la souris ne se fait que à l'intérieur de la box.

La méthode resize dans ComptaDesktopPane :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 public void resizeFrame(JComponent f, int newX, int newY, int newWidth, int newHeight)
    {
        rangees[((CentralInternalFrame) f).getAppartenanceRangee()].resizeFrame(f, newX, newY, newWidth, newHeight);
    }
La méthode resize dans RangeeDeFenetres( extends Box) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 public void resizeFrame(JComponent f, int newX, int newY, int newWidth, int newHeight)
    {
        short placementIndex = findPlacementIndex(f);
        if (newWidth != composants[placements[placementIndex]].getWidth())
        {
            boolean droite = false;
            boolean fixe = false;
            droite = (newX == composants[placements[placementIndex]].getX() || placementIndex == 0) && (placementIndex != placements.length - 1);
            fixe = placements.length == 1;
 
            int difference = newWidth - composants[placements[placementIndex]].getWidth();
            if (!fixe)
            {
                if (droite)
                {
                    rogner(composants[placements[placementIndex]], composants[placements[placementIndex + 1]], difference);
                }
                else
                {
                    rogner(composants[placements[placementIndex]], composants[placements[placementIndex - 1]], difference);
                }
            }
        }
        if (newHeight != composants[placements[placementIndex]].getHeight())
        {
            boolean bas = false;
            boolean fixe = false;
            bas = newY == composants[placements[placementIndex]].getY();
 
            int difference = newHeight - composants[placements[placementIndex]].getHeight();
            general.rognerHauteur(rangee, bas, difference);
        }
    }
Merci de votre aide