我正在用 Java 构建一个国际象棋游戏,我目前在使用 Swing 完全按照我想要的方式获取 GUI 时遇到了一些麻烦。我正在使用 aGridLayout
来组织一个 8x8ChessButton
的网格(它覆盖了 ,JButton
以便我可以在其中存储额外的信息,例如坐标)。最初,ChessButton
除非我将鼠标悬停在它们上,否则 s 不会出现,但我通过将每个按钮ChessButton
放在一个单独的内部JPanel
并将每个按钮设置setPreferredSize()
为设定的高度和宽度来解决这个问题。
现在,我的问题是每个按钮上方(和/或下方?)似乎有一个小的边距或填充。我已经确定为 设置setHgap(0)
和setVgap(0)
,GridLayout
所以我很确定神秘的边距来自按钮或JPanel
s。但是,我似乎无法摆脱它们,ChessButton
每当我鼠标移动它们时,它们似乎都会导致它们上下移动一点。
我意识到这个问题的描述可能有点难以形象化,所以我截取了一张截图(使用JButton
s 而不是ChessButton
s 所以差距更容易识别):http: //img3.imageshack.us/img3/ 6656/jbuttonmargins.png
这是我用来初始化每个的代码ChessButton
:
chessBoard = new JPanel(new GridLayout(8, 8, 0, 0));
chessBoard.setBorder(BorderFactory.createEmptyBorder());
for (int i = 0; i <= 65; i++) {
//Create a new ChessButton
ChessButton button = new ChessButton("hi");
button.setBorder(BorderFactory.createEmptyBorder());
button.setPreferredSize(new Dimension(75, 75));
button.setMargin(new Insets(0, 0, 0, 0));
//Create a new JPanel that the ChessButton will go into
JPanel buttonPanel = new JPanel();
buttonPanel.setPreferredSize(new Dimension(75, 75));
buttonPanel.setBorder(BorderFactory.createEmptyBorder());
buttonPanel.add(button);
//Add the buttonPanel to the grid
chessBoard.add(buttonPanel);
}
那么,我怎样才能摆脱按钮之间的这些垂直空间呢?我对 Swing 比较陌生,所以如果答案非常明显,我很抱歉,但如果有人提供任何帮助,我将不胜感激!提前致谢!