Avatar billede gulbaek Nybegynder
12. december 2002 - 12:29 Der er 8 kommentarer og
2 løsninger

2 JPanel i samme ContentPane

Hvordan lægger man 2 JPanel ind i det samme ContentPane.


contentPane.add(banePanel);
contentPane.add(deltagerePanel);

Det skal virke sådan at banePanel bliver vist nederst, mens deltagerePanel er øverst.
Og de er synlige begge 2.
Avatar billede carstenknudsen Nybegynder
12. december 2002 - 12:33 #1
JPanel p1 = new JPanel(new BorderLayout());
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
//opsæt p2 og p3
p1.add(p2,"North");
p1.add(p3,"South");
getContentPane().add(p1);
Avatar billede riversen Nybegynder
12. december 2002 - 12:35 #2
getContentPane().setLayout( new BorderLayout() );

getContentPane().add( banePanel, BorderLayout.NORTH );
getContentPane().add( deltagerePanel, BorderLayout.SOUTH);
Avatar billede gulbaek Nybegynder
12. december 2002 - 12:41 #3
glemte lige at fortælle at deltagerene skal være placeret ovenpå banePanel, således at det ser ud som om spilleren går rundt oven på banen.
Avatar billede riversen Nybegynder
12. december 2002 - 12:48 #4
gulbaek: dvs. forrest og bagest og ikke ovenpå og nedenunder?
Avatar billede gulbaek Nybegynder
12. december 2002 - 12:49 #5
jep
Avatar billede carstenknudsen Nybegynder
12. december 2002 - 12:54 #6
Så skal du huske at kalde setOpaque(false)
på den komponent der skal være gennemsigtig
(banePanel).
Avatar billede gulbaek Nybegynder
12. december 2002 - 13:05 #7
kunne du ikke komme med et eksempel hvor man bruger setOpaque, samtidig med at man tilføjer de 2 JPanels i ContentPane.

Husk at banePanel skal fungere som en baggrund, for deltagerPanel
Avatar billede cannes Nybegynder
12. december 2002 - 14:16 #8
animate.setOpaque(false);
        animate.setBounds(0,0,GAME_WIDTH, GAME_HEIGHT);
        trackPanel.setOpaque(false);
        trackPanel.setBounds(0,0,GAME_WIDTH, GAME_HEIGHT);
        layeredPane = new JLayeredPane();
        layeredPane.setPreferredSize(new Dimension(GAME_WIDTH, GAME_HEIGHT));
        layeredPane.add(trackPanel, new Integer(0));
        layeredPane.add(animate, new Integer(1));
        JPanel southPanel = new JPanel();
        container.setBackground(Color.black);
        container.add(layeredPane, BorderLayout.CENTER);

Her er et eksempel på brugen af layeredPane. Man kan selvfølgelig lægge så mange på som man har lyst til. Højeste Integer ligger højst. trackPanel og animate er begge objekter af klasser der extender JPanel.
Avatar billede cannes Nybegynder
12. december 2002 - 14:20 #9
JFrame frame = new JFrame("PACMAN 2003");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        game.buildUI(frame.getContentPane());
        frame.getContentPane().addKeyListener(game);
        frame.setSize(GAME_WIDTH, GAME_HEIGHT);
        frame.setVisible(true);
        frame.getContentPane().requestFocus();

Jeg mangler vidst lige at vise det her også. Her bliver framen lavet og den container der bliver brugt i svaret ovenover er den der bliver sendt til buildGUI i 3. linie
Avatar billede gulbaek Nybegynder
12. december 2002 - 15:28 #10
jeg løste det på den her måde

deltagerPanel.setOpaque(false);
getContentPane().add(banePanel);
setGlassPane(deltagerPanel);   
deltagerPanel.setVisible(true);

men tak for hjælpen
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