Background applikacji

0

Witam.
Chciałbym dodać do prostej apki tło w postaci png. Jednak gdy dodaje je w ten sposób setContentPane(new JLabel(ImageIcon(ImageIO.read(getClass().getResourceAsStream("/drawable/background.png"))); inne komponenty zostaja przysłonione. Wszystkie ikonki są umiejscowione w katalogu /drawable w pliku wykonywalnym .jar. Oto wygląd apki bez mojej kulawej implementacji tła apki:

public TTTFrame(){
		setTitle(TITLE);
		setBounds(DEFAULT_X_BOUND, DEFAULT_Y_BOUND, DEFAULT_WIDTH, DEFAULT_HEIGHT);
		setResizable(isResizeable);
		
		try{
			blank=new ImageIcon(ImageIO.read
					(getClass().getResourceAsStream("/drawable/blank.png")));
			circle=new ImageIcon(ImageIO.read
					(getClass().getResourceAsStream("/drawable/circle.png")));
			close=new ImageIcon(ImageIO.read
					(getClass().getResourceAsStream("/drawable/close.png")));		
		}
		
		catch(Exception e){};
		//Setting Internal layout
		//Header of application
		header=new JPanel();
			
			this.getContentPane().add(header, BorderLayout.NORTH);
			hGrid=new GridLayout(1, 2, 10, 10);
			header.setLayout(hGrid);
			header.add(new JLabel("It's turn for:"));
			turnFor=new JLabel("Circle");
				turnFor.setHorizontalAlignment(SwingConstants.RIGHT);
			header.add(turnFor);
			
		//Center Section.
		battleField=new JPanel();
			this.getContentPane().add(battleField, BorderLayout.CENTER);
			cGrid=new GridLayout(3,3,10,10);
			battleField.setLayout(cGrid);
			for (int i=0;i<fieldButton.length;i++) {
				
				fieldButton[i]=new ImageButton(blank);
				fieldButton[i].addActionListener(spacePressed);
				battleField.add(fieldButton[i]);}

		//footer
			footer=new JPanel();
			this.getContentPane().add(footer, BorderLayout.SOUTH);
				resetButton=new JButton("Play Again");
				resetButton.addActionListener(reset);
			footer.add(resetButton);
	}

Proszę o wskazanie w jaki sposób w poprawny sposob ustawic tło tej aplikacji
Pozdrawiam:)

1

Poniżej prosty "working example".

package my_package;

import javax.swing.*;
import java.awt.*;

/**
 * Created by radowid on 23.01.16.
 */
public class Window extends JFrame {

    public Window() {

        this.setContentPane(new JPanel());
        this.getContentPane().setLayout(new BorderLayout());

        JLabel backgroundImage = new JLabel(new ImageIcon(getClass().getResource("pipi.jpg")));
        backgroundImage.setLayout(new GridBagLayout());
        
        JButton button = new JButton("Pogilgocz pingwinka");
        button.setSize(new Dimension(240, 40));
        button.addActionListener(event -> {
            System.out.println("Pingwin - \"Hihihihihi!\"");
        });

        /*
        W pierwszej kolejności dodajesz do contentPane backgroundImage.
        Następnie dodajesz do backgroundImage wszystkie inne elementy
        aplikacji, które mają być "na wierzchu" tła.
         */
        this.getContentPane().add(backgroundImage, BorderLayout.CENTER);
        backgroundImage.add(button);

        this.setTitle("Wesoły Pingwinek");
        this.setSize(new Dimension(400, 400));
        this.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            try {
                new Window();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        });
    }
}

Example.jpg

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