JMenu behind JPanel
Here is my code. Hopefully anyone can come up with a solution:
package eindwerkvgo2;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferStrategy;
import java.util.ArrayList;
import javax.swing.*;
public class Spel extends Canvas implements EngineDeel, KeyListener{
private BufferStrategy strategy;
private long usedTime;
private SpriteOpslag spriteCache;
private ArrayList actors;
private Speler speler;
private Speler2 speler2;
public Spel() {
JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu();
JMenuItem item = new JMenuItem("Niks");
menu.add(item);
bar.add(menu);
spriteCache = new SpriteOpslag();
JFrame ventana = new JFrame("Invaders");
JPanel panel = (JPanel)ventana.getContentPane();
setBounds(0,0,800,600);
panel.setPreferredSize(new Dimension(EngineDeel.WIDTH,EngineDeel.HEIGHT));
panel.setLayout(null);
panel.setVisible(true
);
panel.add(this);
ventana.setJMenuBar(bar);
ventana.setBounds(0,0,EngineDeel.WIDTH,EngineDeel.HEIGHT);
ventana.setVisible(true);
ventana.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
ventana.setResizable(true);
createBufferStrategy(2);
strategy = getBufferStrategy();
requestFocus();
addKeyListener(this);
}
public void initWorld() {
actors = new ArrayList();
for (int i = 0; i < 10; i++){
Aliens m = new Aliens(this);
Aliens2 n = new Aliens2(this);
Aliens3 o = new Aliens3(this);
m.setX( (int)(Math.random()*EngineDeel.WIDTH) );
m.setY( i*20 );
m.setVx( (int)(Math.random()*20-10) );
n.setX( (int)(Math.random()*EngineDeel.WIDTH) );
n.setY( i*10 );
n.setVx( (int)(Math.random()*10-5) );
o.setX( (int)(Math.random()*EngineDeel.WIDTH) );
o.setY( i*5 );
o.setVx( (int)(Math.random()*10-6) );
actors.add(m);
actors.add(n);
actors.add(o);
}
speler= new Speler(this);
speler.setX(EngineDeel.WIDTH/2);
speler.setY(EngineDeel.HEIGHT - 2*speler.getHeight());
speler.setVx(5);
speler2= new Speler2(this);
speler2.setX(EngineDeel.WIDTH/4);
speler2.setY(EngineDeel.HEIGHT - 3*speler2.getHeight());
speler2.setVx(5);
}
public void keyPressed(KeyEvent e) {
speler.keyPressed(e);
}
public void keyReleased(KeyEvent e) {
speler.keyReleased(e);}
public void keyPressed2(KeyEvent e) {
speler2.keyPressed(e);
}
public void keyReleased2(KeyEvent e) {
speler2.keyReleased(e);}
public void keyTyped(KeyEvent e) {}
public void updateWorld() {
int i = 0;
while(i < actors.size())
{
GameObject m = (GameObject)actors.get(i);
if(m.isMarkedForRemoval()){
actors.remove(i);
}else{
m.act();
i++;
}
}
speler.act();
speler2.act();
}
public void paintWorld() {
Graphics2D g = (Graphics2D)strategy.getDrawGraphics();
g.setColor(Color.black);
g.fillRect(0,0,getWidth(),getHeight());
for (int i = 0; i < actors.size(); i++) {
GameObject m = (GameObject)actors.get(i);
m.paint(g);
}
speler.paint(g);
speler2.paint(g);
strategy.show();
}
public SpriteOpslag getSpriteCache() {
return spriteCache;
}
public void game() {
usedTime=1000;
initWorld();
while (isVisible()) {
long startTime = System.currentTimeMillis();
updateWorld();
checkCollisions();
paintWorld();
usedTime = System.currentTimeMillis()-startTime;
try {
Thread.sleep(50);
} catch (InterruptedException e) {}
}
}
public void addGameObject(GameObject a) {
actors.add(a);
}
public void checkCollisions() {
Rectangle playerBounds = speler.getBounds();
for (int i = 0; i < actors.size(); i++) {
GameObject a1 = (GameObject)actors.get(i);
Rectangle r1 = a1.getBounds();
if (r1.intersects(playerBounds)) {
speler.collision(a1);
a1.collision(speler);
}
for (int j = i+1; j < actors.size(); j++) {
GameObject a2 = (GameObject)actors.get(j);
Rectangle r2 = a2.getBounds();
if (r1.intersects(r2)) {
a1.collision(a2);
a2.collision(a1);
}
}
}
}
}

