Hallo!
Ich muss irgendwie ein JPanel über ein anderes legen, also zum Verständnis jetzt: so sieht mein Spielchen, ein Tower Defense Minigame, aus:
Die einzelnen Felder sind JPanels, bestehend aus einem zweidimensionalem Array das wiederum auf einem JPanel liegt.
Jetzt müsste ich die Mobs über diese JPanel laufen lassen, ich dacht mir, mit setLocation(); einfach ständig verändern... Wenn ich aber ein weiteres JPanel auf das JFrame gebe wird das immer nur hinten angehängt, also so:
Welchen Layout Manager könnte man hier verwenden, oder auch andere Lösungsvorschläge, alles gerne erwünscht!
Vielen Dank im Voraus, hier noch der Source Code:
Paintpanel:
Ich muss irgendwie ein JPanel über ein anderes legen, also zum Verständnis jetzt: so sieht mein Spielchen, ein Tower Defense Minigame, aus:
Die einzelnen Felder sind JPanels, bestehend aus einem zweidimensionalem Array das wiederum auf einem JPanel liegt.
Jetzt müsste ich die Mobs über diese JPanel laufen lassen, ich dacht mir, mit setLocation(); einfach ständig verändern... Wenn ich aber ein weiteres JPanel auf das JFrame gebe wird das immer nur hinten angehängt, also so:
Welchen Layout Manager könnte man hier verwenden, oder auch andere Lösungsvorschläge, alles gerne erwünscht!
Vielen Dank im Voraus, hier noch der Source Code:
Java:
public class Gamewindow extends Thread implements MouseListener{
static JFrame fenster;
static Paintpanel parr[][];
Towerwindow tw;
Mobwindow mw;
static String mob="kein";
Vector <Mob> mobvec;
JPanel ground;
public Gamewindow(){
ground=new JPanel();
ground.setLayout(new GridLayout(6,8));
mobvec=new Vector <Mob>();
parr=new Paintpanel[8][6];
fenster=new JFrame();
fenster.addMouseListener(this);
fenster.setLocation(300, 100);
fenster.setTitle("Tower Defense Minigame");
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setLayout(null);
for(int i=0;i<6;i++){
for(int j=0;j<8;j++){
parr[j][i]=new Paintpanel();
parr[j][i].addMouseListener(this);
parr[j][i].pos="["+String.valueOf(j)+"] "+"[ "+String.valueOf(i)+"]";
ground.add(parr[j][i]);
}
}
ground.setBounds(0,0,800,600);
fenster.setContentPane(ground);
karteninit();
fenster.setSize(800,600);
fenster.setResizable(false);
Mob m=new Mob("default");
fenster.setVisible(true);
tw=new Towerwindow();
tw.run();
mw=new Mobwindow();
mw.run();
}
Paintpanel:
Java:
public class Paintpanel extends JPanel{
int towerterrain=0;
String tower="kein";
String pos="";
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if(towerterrain==0){
Color c=new Color(245, 222, 179);
g.setColor(c);
g.fillRect(0, 0, 100,100);
}
else{
Color c=new Color(139,69,19);
g.setColor(c);
g.fillRect(0, 0, 100,100);
g.setColor(Color.BLACK);
g.drawLine(0,0,0,100);
g.drawLine(0,0,100,0);
}
g.setColor(Color.RED);
g.drawString(pos, 20, 20);
if(tower.equals("round"))
g.drawString("Round",20,40);
if(tower.equals("canon"))
g.drawString("Canon",20,40);
if(tower.equals("slow"))
g.drawString("Slow",20,40);
if(tower.equals("sniper"))
g.drawString("Sniper",20,40);
if(tower.equals("default"))
g.drawString("Default",20,40);
if(tower.equals("toxic")){
Image pic=Toolkit.getDefaultToolkit().getImage( "toxic.jpg" );
g.drawImage(pic, 8, 5, 80, 80, this);
}
}
public void roundTower() {
tower="round";
}
public void canonTower() {
tower="canon";
}
public void slowTower() {
tower="slow";
}
public void sniperTower() {
tower="sniper";
}
public void toxicTower() {
tower="toxic";
}
public void defaultTower() {
tower="default";
}
}