Я работаю над созданием шахматной игры на Java, и в настоящее время у меня возникли некоторые проблемы с получением графического интерфейса в точности так, как я хочу с Swing.Я использую GridLayout
для организации сетки 8x8 ChessButton
с (которая переопределяет JButton
, чтобы я мог хранить в них дополнительную информацию, такую как координаты).Изначально ChessButton
не появлялись бы, если бы я их не накрыл, но я решил эту проблему, поместив каждый ChessButton
в отдельный JPanel
и установив для каждой кнопки setPreferredSize()
заданную высоту и ширину.*
Теперь моя проблема в том, что, кажется, есть небольшое поле или отступы над (и / или ниже?) Каждой кнопкой.Я установил setHgap(0)
и setVgap(0)
для GridLayout
, так что я почти уверен, что таинственное поле исходит от кнопок или JPanel
s.Но я не могу избавиться от них, и они, кажется, заставляют каждый ChessButton
немного смещаться вверх / вниз всякий раз, когда я намыкаю на них.
Я понимаю это описание проблемыможет быть немного трудно визуализировать, поэтому я сделал снимок экрана (используя JButton
с, а не ChessButton
с, чтобы пропуски немного легче распознать): 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, поэтому извините, если ответ чрезвычайно очевиден, но я был бы признателен за любую помощь, которую кто-либо может предложить!Заранее спасибо!