stefanius
Jan 8th, 2009, 11:43 AM
Hi there,
I have a problem with an Array of JPanel's. I have 1 main JPanel (called 'puzzle', and on it i put sevaral JPanel's (called 'vak'), like a chessboard.
On the main JPanel i created an array with two dimension (x,y).
So far so good. The 'vak' Jpanel has an mouseClicked event. Is it possible the return the Jpanel 'vak' to the main JPanel 'puzzel'?
package lunar;
import java.util.*;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.*;
public class Puzzel extends JPanel {
private ArrayList<Robot> robots;
private Vak[][] vakken; //Array of Vak, JPanels
private int xPix, yPix, grootte;
private String level;
public Puzzel(){
}
public Puzzel(){
this.setLayout(new GridLayout(5,5,10,10));
robots = new ArrayList<Robot>();
vakken = new Vak[5][5];
robots.add(new Robot(Color.BLUE, "Stefan H"));
robots.add(new Robot(Color.ORANGE, "Stephan G"));
robots.add(new Robot(Color.BLACK, "Howah"));
robots.add(new Robot(Color.GREEN, "Ahmed"));
robots.add(new Robot(Color.PINK, "Peter"));
robots.add(new Xavier());
for(int x=0; x<5;x++){
for(int y=0; y<5;y++){
if(!(x==2 && y==2)){
vakken[x][y] = new Vak(x,y, xPix, yPix);
}else{
vakken[x][y] = new Exit(x,y, xPix, yPix);
}
add(vakken[x][y]);
}
}
}
//Put 'robot' on the specified vak
public void plaatsRobot(Robot robot, Vak vak){
robot.verplaatsRobot(vak);
verfris();
}
//refresh vakken
private void verfris(){
for(int x=0; x<vakken.length;x++){
for(int y=0; y<vakken.length;y++){
vakken[x][y].setKleur(null);
vakken[x][y].setToolTipText("leeg");
vakken[x][y].repaint();
}
}
for(Robot r : robots){
for(int x=0; x<vakken.length;x++){
for(int y=0; y<vakken.length;y++){
if(r.getVak()== vakken[x][y]){
vakken[x][y].setKleur(r.getKleur());
vakken[x][y].setToolTipText(r.getNaam());
}
vakken[x][y].repaint();
vakken[x][y].setVakken(vakken);
}
}
}
}
}
I have a problem with an Array of JPanel's. I have 1 main JPanel (called 'puzzle', and on it i put sevaral JPanel's (called 'vak'), like a chessboard.
On the main JPanel i created an array with two dimension (x,y).
So far so good. The 'vak' Jpanel has an mouseClicked event. Is it possible the return the Jpanel 'vak' to the main JPanel 'puzzel'?
package lunar;
import java.util.*;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.*;
public class Puzzel extends JPanel {
private ArrayList<Robot> robots;
private Vak[][] vakken; //Array of Vak, JPanels
private int xPix, yPix, grootte;
private String level;
public Puzzel(){
}
public Puzzel(){
this.setLayout(new GridLayout(5,5,10,10));
robots = new ArrayList<Robot>();
vakken = new Vak[5][5];
robots.add(new Robot(Color.BLUE, "Stefan H"));
robots.add(new Robot(Color.ORANGE, "Stephan G"));
robots.add(new Robot(Color.BLACK, "Howah"));
robots.add(new Robot(Color.GREEN, "Ahmed"));
robots.add(new Robot(Color.PINK, "Peter"));
robots.add(new Xavier());
for(int x=0; x<5;x++){
for(int y=0; y<5;y++){
if(!(x==2 && y==2)){
vakken[x][y] = new Vak(x,y, xPix, yPix);
}else{
vakken[x][y] = new Exit(x,y, xPix, yPix);
}
add(vakken[x][y]);
}
}
}
//Put 'robot' on the specified vak
public void plaatsRobot(Robot robot, Vak vak){
robot.verplaatsRobot(vak);
verfris();
}
//refresh vakken
private void verfris(){
for(int x=0; x<vakken.length;x++){
for(int y=0; y<vakken.length;y++){
vakken[x][y].setKleur(null);
vakken[x][y].setToolTipText("leeg");
vakken[x][y].repaint();
}
}
for(Robot r : robots){
for(int x=0; x<vakken.length;x++){
for(int y=0; y<vakken.length;y++){
if(r.getVak()== vakken[x][y]){
vakken[x][y].setKleur(r.getKleur());
vakken[x][y].setToolTipText(r.getNaam());
}
vakken[x][y].repaint();
vakken[x][y].setVakken(vakken);
}
}
}
}
}