Pytanie jak wyświetlić obraz jako tło dla innego obrazka?

0

Witam
Mam problem następujący pisząc program w javie potrzebuje wyświetlić cżłowieczka poruszającego się po ekranie z tym że tło nie ma być czarne a powinno być obrazkiem po którym by sie owy ludek poruszał. W funkcji main wyświetla albo samego ludka albo samo tlo.
Kod zawiera 4 klasy:
1)

public class Main extends JFrame {

public Main() {

    add(new tlio());
    add(new index());
    
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(400, 300);
    setLocationRelativeTo(null);
    setTitle("R - Type");
    setResizable(false);
    setVisible(true);
}

public static void main(String[] args) {
    new Main();
}

}
2)
public class index extends JPanel implements ActionListener {

private Timer timer;
private ludek ludek;
private tlio tlo;
public index() {

    addKeyListener(new TAdapter());
    setFocusable(true);
    setBackground(Color.BLACK);
    setDoubleBuffered(true);

    ludek = new ludek(0,0);

    timer = new Timer(5, this);
    timer.start();
}


public void paint(Graphics g) {
    super.paint(g);

    Graphics2D g2d = (Graphics2D)g;
    g2d.drawImage(ludek.getImage(), ludek.getX(), ludek.getY(), this);

    Toolkit.getDefaultToolkit().sync();
    g.dispose();
}


public void actionPerformed(ActionEvent e) {
    ludek.move();
    repaint();  
}


private class TAdapter extends KeyAdapter {

    public void keyReleased(KeyEvent e) {
        ludek.keyReleased(e);
    }

    public void keyPressed(KeyEvent e) {
        ludek.keyPressed(e);
    }
}

}
3)
public class ludek {

private String ludek="b.png";
private int dx,dy,x,y;
private Image image;

public ludek (int a,int b)
{
    ImageIcon ii = new ImageIcon(this.getClass().getResource(ludek));
    image = ii.getImage();
    x = a;
    y = b;

}

public void move() {
x += dx;
y += dy;
}

public int getX() {
    return x;
}

public int getY() {
    return y;
}

public Image getImage() {
    return image;
}

public void keyPressed(KeyEvent e) {

    int key = e.getKeyCode();

    if (key == KeyEvent.VK_LEFT) {
        dx = -1;
    }

    if (key == KeyEvent.VK_RIGHT) {
        dx = 1;
    }

    if (key == KeyEvent.VK_UP) {
        dy = -1;
    }

    if (key == KeyEvent.VK_DOWN) {
        dy = 1;
    }
}

public void keyReleased(KeyEvent e) {
    int key = e.getKeyCode();

    if (key == KeyEvent.VK_LEFT) {
        dx = 0;
    }

    if (key == KeyEvent.VK_RIGHT) {
        dx = 0;
    }

    if (key == KeyEvent.VK_UP) {
        dy = 0;
    }

    if (key == KeyEvent.VK_DOWN) {
        dy = 0;
    }
}

}
4)
public class tlio extends JPanel {

private Image tlo;
public tlio ()
{
    ImageIcon ii = new ImageIcon(this.getClass().getResource("a.png"));
    tlo = ii.getImage();
    

}
public Image getImage() {
    return tlo;
}
 public void paint(Graphics g)
{
 Graphics2D g2d = (Graphics2D) g;
    g2d.drawImage(tlo, 0, 0, null); 

}

}

0

po 1)
wyedytuj łaskawie swój post i zawiń ten kod w znaczniki bo mnie ch** strzela jak patrze na taki plain text - serio myślisz, że będę takie coś czytał?
po 2)

fragment z mojej klasy wyświetlającej obraz jako tło:

  @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        // tutaj zrób sobie drawImage....
            
        }

prawda, że milej się czyta?

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