我正在用 Java Swing 制作类似国际象棋的游戏(我知道 Swing 不是正确的方法,但我还是想尝试一下)我在让棋子出现在显示器上时遇到问题适当的步伐。由于棋子物理位置的性质,我不能使用布局管理器。代码看起来像这样(诚然,它的设计很笨拙):
public class Window extends JFrame {
private JPanel board;
public Window() {
super();
board = new JPanel();
JLabelOrganizer jlo = new JLabelOrganizer();
for (JLabel: JLabelOrganizer) {
JLabel.setBounds(calcX(), calcY(), width, height);
board.add(JLabel);
}
board.setBounds(x, y, width1, height1);
board.setLayout(null);
add(board);
setLayout(null);
}
public class JLabelOrganizer {
public JLabelOrganizer {
instantiate Type1 and Type2 JLabel objects and store them
}
public class Type1 extends JLabel {
}
public class Type2 extends JLabel {
}
}
}
类 Type1 和 Type2 代表这些片段。运行时,JLabels(Type1 和 Type2)不会显示在 setBounds() 指定的正确位置。然而,持有这些棋子的棋盘 JPanel 被设置在正确的位置,由它自己的 setBounds() 调用指定。有没有人知道为什么会这样?可能是因为我从 JLabel 继承或 JLabel 类是内部类?谢谢。
编辑:忘记指定 JLabels 只显示在 JPanel 所在位置的左上角,无论我将它们设置到什么 x 和 y 位置。