Menu, Rysowanie problem

0

Witam. Dopiero zaczynam swoja przygode z Java, Mam problem z zrobieniem tła do menu.

Wiec tak stworzyłem klase ktora dziedziczy JPanel ktora rysuje mi tlo. Oraz klase ktora inicjuje mi buttony w panelu - wykorzystuje Layout. Problem jest taki ze kiedy tworze obiekty obu klas i wrzucam je do kontenera, i dodaje do szybki to pokazuje mi albo tlo albo layout z przyciskami, w zaleznosci co pozniej dodam do kontenera. Jak ten problem mozna rozwiazac? Podaje kod

           class Rysowanie extends JPanel //Klasa rysowania
      {

          public Rysowanie()
          {
              super();
               System.out.println("Lyypa");
          }
    @Override
           public void paintComponent(Graphics g)
           {
            super.paintComponent(g);

    Graphics2D g2 = (Graphics2D) g;
    Image img1 = Toolkit.getDefaultToolkit().getImage("tlo.jpeg");
    g2.drawImage(img1, 0, 0, this);
    g2.finalize();
}
      }

   class Panel extends JPanel   /// Klasa inicjalizujaca Buttony
   {
       public Panel(){
                    sluchaczmyszy sm = new sluchaczmyszy();
		setLayout(new GridBagLayout());
		setBorder(BorderFactory.createLineBorder(Color.black));
		GridBagConstraints c = new GridBagConstraints();
		singlePlayer.addMouseListener(sm);
		multiPlayer.addMouseListener(sm);
                    trening.addMouseListener(sm);
                    highscores.addMouseListener(sm);
                    authors.addMouseListener(sm);
                    exit.addMouseListener(sm);
		c.fill = GridBagConstraints.BOTH;
		c.ipadx = 20;
		c.ipady = 10;
		c.insets = new Insets(20, 50, 20, 20);
		c.gridy = 1;
		add(singlePlayer, c);
		c.gridy = 2;
		add(multiPlayer, c);
		c.gridy = 3;
                    add(trening, c);
		c.gridy = 4;
                    add(highscores, c);
		c.gridy = 5;
                    add(authors, c);
		c.gridy = 6;
                    add(exit, c);
		c.gridy = 7;
		//setBackground(Color.);
       }

JPanel tlo = new Rysowanie();
private Container kontener = this.getContentPane();
private Panel menu = new Panel();

kontener.add(menu);
kontener.add(tlo);

Dzieki za pomoc :)

0
JPanel tlo = new Rysowanie();
private Container kontener = this.getContentPane();
private Panel menu = new Panel();

//kontener.add(menu); //menu nie dodajesz bezposrednio
menu.setOpaque(false); //tylko ustawiasz je jako przezroczyste
tlo.add(menu); //i dodajesz do tla
kontener.add(tlo);

Jeśli tłem miałaby być textura to przyda ci się jeszcze klasa: http://download.oracle.com/javase/6/docs/api/java/awt/TexturePaint.html

0

Dzieki :) Tego mi było trzeba ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1