Java - Problem when Resizing a JInternalFrame

Posted by Amokrane on Stack Overflow See other posts from Stack Overflow or by Amokrane
Published on 2010-03-20T14:25:57Z Indexed on 2010/03/20 14:31 UTC
Read the original article Hit count: 429

Filed under:
|
|
|

Hi,

In a previous SO question, I was talking about somes issues dealing with my MDI architecture. I have now another problem, when resizing my JInternalFrame. Here is a short video that illustrates the problem.

I have a class: Cadre which is basically my JInternalFrame.

public class Cadre extends JInternalFrame
{
    /** Largeur par d'une fenêtre interne */
    private int width;

    /** Hauteur d'une fenêtre interne */
    private int height;

    /** Titre d'une fenêtre interne */
    private String title;

    /** Toile associée à la fenêtre interne */
    private Toile toile;

    /** Permet de compter le nombre de fenêtres internes ouvertes */
    static int frameCount = 0;

    /** Permet de décaler les fenêtres internes à l'ouverture */
    static final int xDecalage = 30, yDecalage = 30;


    public Cadre()
    {

        super("Form # " + (++frameCount),
                  true, //resizable
                  true, //closable
                  true, //maximizable
                  true);//iconifiable

        // Taille de la fenêtre interne par défaut
        width = 500;
        height = 500;

        // Titre par défaut
        title = "Form # " + (frameCount);

        // On associe une nouvelle toile à la fenêtre
        toile = new Toile();
        this.setContentPane(toile);

        // On spécifie le titre
        this.setTitle(title);

        // Taille de chaque form par défaut
        this.setSize(width, height);

        // Permet d'ouvrir les frames de manière décalée par rapport à la dernière ouverte
        this.setLocation(xDecalage * frameCount, yDecalage * frameCount);


    }
}

And this is the JFrame that contains all the JInternalFrame(s):

public class Fenetre extends JFrame
{
    /** Titre de la fenêtre principale */
    private String title;

    /** Largeur de la fenêtre */
    private int width;

    /** Hauteur de la fenêtre */
    private int height;

    /** Le menu */
    private Menu menu;

    /** La barre d'outils */
    private ToolBox toolBox;

    /** La zone contenant les JInternalFrame */
    private JDesktopPane planche;

    /** Le pannel comportant la liste des formes à dessiner*/
    private Pannel pannel;

    /** La liste de fenêtres ouvertes */
    private static ArrayList<Cadre> cadres;


    public Fenetre(String inTitle, int inWidth, int inHeight)
    {

        // lecture de la taille de la frame
        width = inWidth;
        height = inHeight;

        // lecture du titre de la fenêtre
        title = inTitle;

        // On spécifie la taille de la fenêtre ainsi que le titre
        this.setSize(width, height);
        this.setTitle(title);

        // Initialisations des listes de cadres
        cadres = new ArrayList<Cadre>();

        // Instanciation de la fenêtre
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // On définit un layout pour notre frame
        this.setLayout(new BorderLayout());

        // On crée la zone supérieure : Menu + ToolBar
        JPanel banniere = new JPanel();
        banniere.setLayout(new BorderLayout());

        // Instanciation d'un menu
        menu = new Menu(this);
        this.setJMenuBar(menu);

        // En haut la ToolBox
        toolBox = new ToolBox();
        this.add(toolBox, BorderLayout.NORTH);

        // Ajout du pannel à gauche
        pannel = new Pannel();
        this.add(pannel, BorderLayout.WEST);

        **// Intialisation de la planche de dessin
        planche = new JDesktopPane();

        // On ajoute une Internal frame à notre desktop pane
        Cadre cadre = new Cadre();
        cadre.setVisible(true);
        planche.add(cadre);
        try {
            cadre.setSelected(true);
        } 

        catch (PropertyVetoException e) {

            e.printStackTrace();
        }**

        // Pour faire en sorte que le déplacement soit "nice"
        planche.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);

        // On ajoute le nouveau cadre crée à la liste des cadres
        cadres.add(cadre);

        // Le contenu principal de la fenêtre est la planche contenant les différentes JInternalFrame
        this.getContentPane().add(planche);

        this.setVisible(true);      
    }
}

So as you can see, I have declared a: JDesktopPane inside the main JFrame of my application.

Any idea how to solve this?

Thank you!

© Stack Overflow or respective owner

Related posts about java

Related posts about jinternalframe