我正在用Java構建一個國際象棋遊戲,而且我正在按照我想要的方式使用Swing來處理GUI。我使用GridLayout
來組織一個8x8,ChessButton
s的網格(它覆蓋了JButton
,這樣我就可以在其中存儲諸如座標的額外信息)。最初,ChessButton
s不會出現,除非我對它們進行掩蓋,但我通過將每個ChessButton
放置在單獨的JPanel
內並將每個按鈕的setPreferredSize()
設置爲設定的高度和寬度來解決該問題。Java Swing - JPanel和GridLayout頁邊距/填充
現在,我的問題是,每個按鈕上方(和/或下方)似乎都有一個小的邊距或填充。我已經確定爲GridLayout
設置了setHgap(0)
和setVgap(0)
,所以我很確定神祕的餘量來自按鈕或JPanel
s。但是,我似乎無法擺脫它們,而且他們似乎每當我將鼠標移動時,它們都會使每個上/下位移一點點。
我意識到問題的描述可能有點難以想像,所以我採取了屏幕截圖(使用JButton
真是讓人不是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比較陌生,所以我很抱歉,如果答案非常明顯,但我會很感激任何人可能提供的幫助!提前致謝!
這是一個很好的觀點。爲了避免這個問題,我的示例使用`GridLayout`沒有間隙。 – trashgod 2010-12-02 05:36:00