Java Crossword Application - какой пакет использовать? - PullRequest
1 голос
/ 10 апреля 2010

Я собираюсь создать приложение кроссворда Java, но я не уверен, какие пакеты использовать для построения сетки кроссвордов. Я знаю, что вы можете вручную рисовать сетки с помощью Graphics2D и т. Д., Но я не уверен, что это самый простой способ сделать это, поскольку мне понадобятся текстовые поля в квадратах сетки.

У всех есть предложения по созданию сетки кроссвордов.

Ответы [ 3 ]

3 голосов
/ 10 апреля 2010

На самом деле я не думаю, что вам нужны текстовые поля в квадратах сетки, а просто записывать каждую букву для каждой ячейки сетки.

Чтобы разрешить редактирование, вы просто фиксируете нажатия клавиш на используемом компоненте и устанавливаете ячейки кроссворда в соответствии с тем, что пишет пользователь.

Делать это таким образом было бы довольно легко, потому что вы можете использовать задний двумерный массив, который хранит всю сетку, а затем, когда пользователь выбирает определение, вы просто начинаете заполнять отдельные буквы всякий раз, когда ключи вводятся, начиная с первой ячейки определение ... ваша процедура рисования должна будет просто уметь рисовать сетку и центральные буквы внутри ячеек, ничего более ..

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

0 голосов
/ 10 апреля 2010

Вы рассматривали JavaFX вообще? JavaFX позволит вам создавать «графы сцен» на основе векторных / графических изображений, отредактированных с помощью Adobe Photoshop / Inkscape и т. Д.

Если нет, то самым простым способом было бы расширить JTextField таким образом, чтобы он просто содержал 1 символ и был черным / или любого другого цвета, чтобы указать, что он не редактируется и отключен. Кроме того, добавьте пользовательскую границу, чтобы указать номер вопроса головоломки. Поместите все в GridLayout.

0 голосов
/ 10 апреля 2010

Возможно, используйте JTable и пользовательский рендерер для ячеек. Это должно быть как минимум простое решение. Конечно, потребуется немного времени, чтобы привыкнуть к JTable, но в итоге все довольно просто.

...