Hallo liebe Java Comunity^^
Ich arbeite an einem kleinen Übungs-programm, welches (u.a.) ein Schachbrett darstellen muss.
Ich habe dies mithilfe von JPanels mit verschiedenen Hintergrundfarben erledigt (später muss ich ja noch auf den Schachbrett Feldern etwas zeichnen).
Das Problem ist folgendes:
Wie man sieht ist am Rechten bzw unterem Rand des Schachbretts eine deutliche lücke zwischen dem Rahmen und den JPanels selbst.
Da das Schachbrett selbst ein JPanel mit GridLayout ist, weiß ich nicht woher dieser Rand kommt, bzw wie ich ihn vermeiden kann. - Ich weiß nur das bei geringerer Feld-Anzahl die Lücke kleiner wird, also hat es wohl vermutlich etwas mit der hohen Anzahl an JPanels zu tun (daher auch zur verdeutlichung die hohe Anzahl Felder im Bild)
Bitte helft mir
ich bin ratlos^^
Hier der Quellcode:
Das JFrame selbst:
Die Field Klasse :
Schon mal danke für die freundliche hilfe 
Ich arbeite an einem kleinen Übungs-programm, welches (u.a.) ein Schachbrett darstellen muss.
Ich habe dies mithilfe von JPanels mit verschiedenen Hintergrundfarben erledigt (später muss ich ja noch auf den Schachbrett Feldern etwas zeichnen).
Das Problem ist folgendes:

Wie man sieht ist am Rechten bzw unterem Rand des Schachbretts eine deutliche lücke zwischen dem Rahmen und den JPanels selbst.
Da das Schachbrett selbst ein JPanel mit GridLayout ist, weiß ich nicht woher dieser Rand kommt, bzw wie ich ihn vermeiden kann. - Ich weiß nur das bei geringerer Feld-Anzahl die Lücke kleiner wird, also hat es wohl vermutlich etwas mit der hohen Anzahl an JPanels zu tun (daher auch zur verdeutlichung die hohe Anzahl Felder im Bild)
Bitte helft mir
Hier der Quellcode:
Das JFrame selbst:
Code:
public class QueenFrame extends JFrame implements ActionListener {
private JPanel pTitle, pBoard, pButtons;
private JLabel lTitle;
private Field fBoard[][];
private int queenAmount;
public static void main(String args[]){
new QueenFrame(64);
}
public QueenFrame() {
this(4);
}
public QueenFrame(int queenAmount) {
this.queenAmount = queenAmount;
Container cont = new Box(BoxLayout.X_AXIS);
this.setContentPane(cont);
fBoard = createChessBoard(queenAmount, null);
pBoard = wrapChessBoard(fBoard, new Dimension(queenAmount * 15,
queenAmount * 15));
cont.add(pBoard);
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
}
private static JPanel wrapChessBoard(Field[][] board,
Dimension chessBoardSize) {
JPanel result = new JPanel(
new GridLayout(board[0].length, board.length));
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
result.add(board[i][j].space);
}
}
result.setBorder(BorderFactory.createCompoundBorder(BorderFactory
.createCompoundBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(5, 5, 5, 5),
BorderFactory.createBevelBorder(BevelBorder.RAISED)),
BorderFactory.createEmptyBorder(5, 5, 5, 5)),
BorderFactory.createLineBorder(Color.black, 2)));
result.setMinimumSize(chessBoardSize);
result.setPreferredSize(chessBoardSize);
result.setMaximumSize(chessBoardSize);
result.setSize(chessBoardSize);
return result;
}
private static Field[][] createChessBoard(int sideLenght, Field[][] oldBoard) {
Field[][] result = new Field[sideLenght][sideLenght];
for (int i = 0; i < sideLenght; i++) {
for (int j = 0; j < sideLenght; j++) {
result[i][j] = (oldBoard != null && oldBoard.length >= i
&& oldBoard[i].length >= j && oldBoard[i][j] != null) ? oldBoard[i][j]
: new Field((i % 2 == 0) ? ((j % 2 == 0) ? Field.BLACK
: Field.WHITE) : ((j % 2 == 0) ? Field.WHITE
: Field.BLACK));
}
}
return result;
}
public int getQueenAmount() {
return queenAmount;
}
public void setQueenAmount(int queens) {
// TODO everything
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO everything
}
Die Field Klasse :
Code:
public class Field {
public final JPanel space = new JPanel();
public final boolean color;
private boolean hasQueen = false;
public static boolean BLACK = true;
public static boolean WHITE = false;
public Field(boolean color) {
this.color = color;
space.setOpaque(true);
this.fill(color);
}
public void setQueen(boolean arg) {
hasQueen = arg;
this.fill(arg);
}
public boolean hasQueen() {
return hasQueen;
}
private void fill(boolean arg) {
space.setBackground((arg == BLACK) ? Color.black : Color.white);
}
}