私は Java でチェス ゲームを作成する作業を行っていますが、現在、Swing で GUI を思いどおりに作成するのに少し苦労しています。私は を使用してGridLayout
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に比較的慣れていないので、答えが非常に明白である場合は申し訳ありませんが、誰かが提供する必要がある助けをいただければ幸いです! 前もって感謝します!