18. marts 2005 - 01:19 Der er 2 kommentarer og
1 løsning

JPanel på Bagggrundsbillede??

Hej hej....

Min GUI består bla. af en JDesktopPane, som jeg har lagt et baggrundsbillede på. Det virker fint. 

Men i det tilfælde at jeg vil instatiere min LoadPanel (JPanel)

      loadPanel = new LoadPanel(this);
      desktop.add(loadPanel);   
      loadPanel.setVisible(true);
      loadPanel.setLocation((desktop.getSize().width)-150,10);

vises denne ikke gennem baggrundsbilledet.

jeg har prøvet uden held med

      baggrund.add(loadPanel);

hvis det ikke afskrækker for meget er min GUI her:

public class GUI extends JFrame

    Kontrol control;
    AddChaFrame addChaFrame;
    WeaponFrame weaponFrame;
    ArmorFrame armorFrame;
    IconFrame imageFrame;
    LoadPanel loadPanel;
    Attacker attack;
    Defender defend;
    Dialog dia;
    App app;
    JDesktopPane desktop;
    JPanel p;
    Baggrund baggrund;
     
    public GUI()
   
    { 
        super("Merp-HelpDesk");
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        //Dimension frameSize = content.getSize();
        setSize(screenSize.width, screenSize.height-30);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
           
       
        baggrund = new Baggrund();
        baggrund.setLocation(0,0);
                   
        desktop = new JDesktopPane();
             
        final JPanel p = new JPanel(new GridBagLayout());
     
        desktop.addComponentListener(new ComponentAdapter()
        {
          public void ComponentResized(ComponentEvent ev)
          {
           
            Dimension desktopSize = desktop.getSize();
            p.setBounds(0,0,desktopSize.width, desktopSize.height);
            p.validate();
          }
        });
        desktop.add(baggrund);   
       
        JPanel buttonPanel = new JPanel();       
       
        JButton addEnemy = new JButton("Load Character");
        addEnemy.setBackground(new Color(67, 175, 16));
        addEnemy.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            { 
              loadCharacter();         
            }
        });
             
        JButton nextRound = new JButton("Create Character");
        nextRound.setBackground(new Color(67, 175, 16));
        nextRound.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
              addCharacter();
            }
        });
       
        buttonPanel.setBackground(new Color(10,120,30));
        buttonPanel.add(addEnemy);
        buttonPanel.add(nextRound);
       
        getContentPane().add(desktop, BorderLayout.CENTER);
        getContentPane().add(buttonPanel, BorderLayout.SOUTH);
        control = new Kontrol(this);
        attack = Attacker.getInstance();
        attack.setLocation((desktop.getSize().width)+110, (desktop.getSize().height/2)+728);
        desktop.add(attack);
        attack.setVisible(true);
        defend = Defender.getInstance();
        defend.setLocation((desktop.getSize().width/2)+800, (desktop.getSize().height/2)+728);
        desktop.add(defend);
        defend.setVisible(true);
        dia = new Dialog(this);
        dia.setLocation(((desktop.getSize().width)/2)+482, (desktop.getSize().height/2)+728);
        desktop.add(dia);
        dia.setVisible(true);
        /*ImageIcon icon = new ImageIcon("cor1.bmp");
        JLabel label = new JLabel();
        label.setIcon(icon);
        p.add(label);
        label.setVisible(true);
        label.setLocation(0,0);
        */
    }
    public void addCharacter()
    {
      addChaFrame = new AddChaFrame(this);
      desktop.add(addChaFrame);
      addChaFrame.setVisible(true);
      addChaFrame.setLocation((desktop.getSize().width/2)-105, (desktop.getSize().height/2)-170);
    }
    public void addWeapon()
    {
      weaponFrame = new WeaponFrame(this);
      desktop.add(weaponFrame);
      weaponFrame.setVisible(true);
      weaponFrame.setLocation((desktop.getSize().width/2)-295, (desktop.getSize().height/2)-170);
    }
 
    public void addIconFrame()
    { 
      imageFrame = new IconFrame(this);
      desktop.add(imageFrame);
      imageFrame.setVisible(true);
      imageFrame.setLocation((desktop.getSize().width/2)+113,(desktop.getSize().height/2)-170);
    }
    public void loadCharacter()
    {
      loadPanel = new LoadPanel(this);
      desktop.add(loadPanel);   
      loadPanel.setVisible(true);
      loadPanel.setLocation((desktop.getSize().width)-150,10);
    }
    public void addArmorFrame()
    {
      armorFrame = new ArmorFrame(this);
      desktop.add(armorFrame);
      armorFrame.setVisible(true);
      armorFrame.setLocation((desktop.getSize().width/2)-105,(desktop.getSize().height/2)+112);
    }
 
    public class Baggrund extends JPanel
    {
        public Baggrund()
        {
            super(true);
            setSize(1280,1024);
        }
     
        public void paint(Graphics g)
        {
            super.paint(g);
         
            Graphics2D g2 = (Graphics2D)g.create();         
            Image im = Toolkit.getDefaultToolkit().getImage("baggrund.gif");
            ImageIcon image = new ImageIcon(im);
                       
            g2.drawImage(image.getImage(),0, 0, 1280, 1024, this);
                   
        }

    }
}
Avatar billede di8leva Nybegynder
18. marts 2005 - 09:02 #1
Jeg har ikke kigget igennem hele koden, men der ser ud til at du mangler at sætte din JPanel "opaque" (ogennemsigtig)

      loadPanel = new LoadPanel(this);
      loadPanel.setOpaque(false);  <--------------------
      desktop.add(loadPanel); 
      loadPanel.setVisible(true);
      loadPanel.setLocation((desktop.getSize().width)-150,10);
19. marts 2005 - 01:46 #2
hej di8leva.

Beklager men det virker ikke....
21. marts 2005 - 19:48 #3
Spørgsmålet lukkes...
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