На самом деле я не думаю, что вам нужны текстовые поля в квадратах сетки, а просто записывать каждую букву для каждой ячейки сетки.
Чтобы разрешить редактирование, вы просто фиксируете нажатия клавиш на используемом компоненте и устанавливаете ячейки кроссворда в соответствии с тем, что пишет пользователь.
Делать это таким образом было бы довольно легко, потому что вы можете использовать задний двумерный массив, который хранит всю сетку, а затем, когда пользователь выбирает определение, вы просто начинаете заполнять отдельные буквы всякий раз, когда ключи вводятся, начиная с первой ячейки определение ... ваша процедура рисования должна будет просто уметь рисовать сетку и центральные буквы внутри ячеек, ничего более ..
A JTable
может работать, но оно кажется слишком большим для вашей проблемы, потому что вы в конечном итоге будете взаимодействовать с множеством вещей, которые вам вообще не нужны ..
РЕДАКТИРОВАТЬ (для комментария) :
Я сделал нечто подобное:
Вы можете иметь класс ячейки
class Cell
{
boolean isBlank;
char value;
}
с массивом ячеек вы получаете свою сетку:
Cell[][] gamefield = new Cell[15][15];
затем внутри paint()
вы можете легко повторить:
for (int i = 0; i < Scheme.rows; ++i)
{
for (int j = 0; j < Scheme.cols; ++j)
{
g2.drawRect(i*32, j*32, 32, 32);
if (Scheme.scheme[i][j].isBlank)
g2.fillRect(i*32 + 3, j*32 + 3, 32 - 5, 32 - 5);
}
}
Только потому, что у меня все еще есть скриншот, результат был что-то вроде
альтернативный текст http://img3.imageshack.us/img3/7374/68514939.png