【发布时间】:2011-05-18 22:01:13
【问题描述】:
我正在用 Java 构建一个国际象棋游戏,但我目前在使用 Swing 以完全按照我想要的方式获取 GUI 时遇到了一些麻烦。我使用GridLayout 来组织8x8 ChessButtons 的网格(它覆盖JButton,以便我可以在其中存储额外的信息,例如坐标)。最初,除非我将鼠标悬停在 ChessButtons 上,否则它们不会出现,但我通过将每个 ChessButton 放置在单独的 JPanel 中并将每个按钮的 setPreferredSize() 设置为设定的高度和宽度来解决这个问题。
现在,我的问题是每个按钮上方(和/或下方?)似乎有一个小的边距或填充。我确保为GridLayout 设置了setHgap(0) 和setVgap(0),所以我很确定神秘的边距来自按钮或JPanels。但是,我似乎无法摆脱它们,它们似乎导致每个 ChessButton 每当我鼠标移动时都会向上/向下移动一点。
我意识到这个问题的描述可能有点难以形象化,所以我截取了一张截图(使用JButtons 而不是ChessButtons,因此差距更容易识别):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 比较陌生,所以如果答案非常明显,我很抱歉,但如果有人提供任何帮助,我将不胜感激!提前致谢!
【问题讨论】:
标签: java swing border margin grid-layout