Avatar billede jespersahner Nybegynder
01. maj 2003 - 02:52 Der er 5 kommentarer og
1 løsning

Højdejustering af "indlejrede" JPanel's

Jeg forsøger at lave en applikation, hvor jeg bruger flere JPanel's indlejret i hinanden vha. GridLayout.
Nedenstående illustrerer på simpel vis tankegangen:
        ...
        jPanel1.setLayout(new java.awt.GridLayout(2, 1));
        jPanel1.add(jPanel2);
        jPanel1.add(jPanel3);

        jPanel2.setLayout(new java.awt.GridLayout(1, 2));
        jPanel2.add(jPanel4);
        jPanel2.add(jPanel5);

        jPanel5.setLayout(new java.awt.GridLayout(2, 1));
        jPanel5.add(jPanel6);
        jPanel5.add(jPanel7);
        ...

Opbygningen sker altså på flg. vis:

*******************
*                *
*                *
*                *
*        1        *
*                *
*                *
*                *
*******************


*******************
*                *
*        2        *
*                *
*******************
*                *
*        3        *
*                *
*******************

*******************
*        *        *
*    4  *    5  *
*        *        *
*******************
*                *
*        3        *
*                *
*******************


*******************
*        *    6  *
*  4    **********
*        *    7  *
*******************
*                *
*        3        *
*                *
*******************


Problemstillingen er nu flg.:
Jeg ønsker som udgangspunkt at alle JPanel's skal have samme højde (lad os kalde denne højde for 1), med mindre det pågældende JPanel "gaber" over flere andre JPanel's.
I eksemplet er det altså meningen, at JPanel3 skal have reduceret højden, idet JPanel3 ikke gaber over andre JPanel's, mens JPanel4 skal have højde 2, da denne gaber over 2 andre JPanel's. Hvis ikke jeg specificerer noget i min kode, bliver resultatet som vist.

Jeg har eksperimenteret lidt med JPanel3.setMaximumSize og JPanel3.setMinimumSize men uden held (ingen effekt overhovedet?).

Men, men..jeg er selvsagt heller ikke begejstret for at skulle kode for meget for at løse problemet, da min GridLayout gerne skulle kunne håndtere situationen.

Er der en nem måde at håndtere dette på?

Det skal yderligere bemærkes, at JPanel1 er "indlejret" i en JFrame.
Avatar billede jespersahner Nybegynder
01. maj 2003 - 02:54 #1
Hmmm..det gik vist lidt galt med grafikken, men mon ikke I forstår problemstillingen trods alt :-)
Avatar billede =maddog= Nybegynder
01. maj 2003 - 04:06 #2
Der er faktisk en LayoutManager kaldet GridBagLayout, der er beregnet til sådan noget.
Du får svært ved at ændre ved højden, når de er registreret i LayoutManager'en. Det du gør er faktisk at bede LayoutManager'en overtage styringen af dimensionering'en af objekterne således du ikke selv skal gøre det. I et GridLayout vil hver "celle" altid være lige stor.
Avatar billede jespersahner Nybegynder
01. maj 2003 - 10:22 #3
Jeg har selv haft kig på GridBagLayout, hvor man styrer tingene mere præcist selv med den omkostning det har på kodesiden. Det kan godt være det ender med den LayoutManager.
Avatar billede =maddog= Nybegynder
01. maj 2003 - 11:29 #4
Det er en svær fætter at håndtere, men den kan de ting du har brug for. Du skal lave et constraint objekt og bruge det fortløbende. Dette constraint objekt justerer du før du tilføjer et panel således de enkelte angivelser for celledimensioner passer til denne Panel .
Avatar billede Slettet bruger
29. juni 2003 - 23:42 #5
Du vil IKKE kunne bruge GridLayout, eftersom det får alle komponenter under denne layout-manager til at ha' samme dimensioner... Du kunne jo evt. prøve med CardLayout (som er rimeligt simpelt) hvor du skal angive retning (vertikal / horizontal) for hvordan komponenter skal lægges ud, eller GridBagLayout (som er tungt, en smule besværligt) eftersom dette giver dig de ønskede muligheder....
Avatar billede jespersahner Nybegynder
23. november 2004 - 14:33 #6
Lukker spm.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester