Возможно, проблема в ваших двух перегрузках конструктора, одна из которых устанавливает границу, а другая нет:
public GoBoard(){
this.linien = 9;
this.setBorder(BorderFactory.createEmptyBorder(0,10,10,10));
}
public GoBoard(int pLinien){
this.linien = pLinien;
}
Если вы создаете объект GoBoard со вторым конструктором и передаете параметр int,пустая граница не будет создана.Чтобы исправить это, подумайте об изменении этого, чтобы оба конструктора установили границу:
// default constructor
public GoBoard(){
this(9); // calls other constructor
}
public GoBoard(int pLinien){
this.linien = pLinien;
this.setBorder(BorderFactory.createEmptyBorder(0,10,10,10));
}
edit 1: Добавленная вами граница больше предназначена для управления тем, как компоненты добавляются в вашу JPanel.Если вы хотите нарисовать свою одну JPanel, но иметь рамку вокруг чертежа, рассмотрите возможность размещения этой JPanel в другую JPanel, удерживающую JPanel, которая имеет границу.Например,
class GoTest {
private static final int JB_WIDTH = 400;
private static final int JB_HEIGHT = JB_WIDTH;
private static void initGui() {
JFrame frame = new JFrame("GoBoard");
GoBoard jboard = new GoBoard();
jboard.setLayout(new BorderLayout(10, 10));
JPanel holdingPanel = new JPanel(new BorderLayout());
int eb = 20;
holdingPanel.setBorder(BorderFactory.createEmptyBorder(0, eb, eb, eb));
holdingPanel.add(jboard, BorderLayout.CENTER);
frame.add(holdingPanel, BorderLayout.CENTER);
jboard.setPreferredSize(new Dimension(JB_WIDTH, JB_HEIGHT));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//!! frame.setSize(400, 400);
frame.pack();
frame.setVisible(true);
}
// .... etc....