Javaクロスワードアプリケーションを作成しようとしていますが、クロスワードグリッドを描画するために使用するパッケージがわかりません。Graphics2Dなどを使用して手動でグリッドを描画できることは知っていますが、グリッドの正方形にテキストフィールドが必要になるため、これが最も簡単な方法かどうかはわかりません。
クロスワードグリッドの作成については、誰でも提案があります。
Javaクロスワードアプリケーションを作成しようとしていますが、クロスワードグリッドを描画するために使用するパッケージがわかりません。Graphics2Dなどを使用して手動でグリッドを描画できることは知っていますが、グリッドの正方形にテキストフィールドが必要になるため、これが最も簡単な方法かどうかはわかりません。
クロスワードグリッドの作成については、誰でも提案があります。
実際には、グリッドの正方形にテキストフィールドが必要だとは思いませんが、すべてのグリッドセルにすべての文字を書き留めるだけです..
編集できるようにするには、使用するコンポーネント上でキーボード ストロークをキャッチし、ユーザーが書いた内容に従ってクロスワード セルを設定します。
グリッド全体を格納するバック 2 次元配列を使用できるため、この方法は非常に簡単です。ユーザーが定義を選択すると、定義の最初のセルからキーが入力されるたびに 1 文字の入力を開始するだけです。 . 描画ルーチンは、セル内にグリッドと中央文字を描画できるようにするだけで十分です..
AJTable
は機能する可能性がありますが、まったく必要のない多くのものとやり取りすることになるため、問題に対して大きすぎると考えています..
編集(コメント用):
私はこのように似たようなことをしました:あなたはセルクラスを持つことができます
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);
}
}
JavaFX を検討したことはありますか? JavaFX を使用すると、Adobe Photoshop/Inkscape などを使用して編集したベクター/グラフィックに基づいて「シーングラフ」を作成できます。
そうでない場合、最も簡単な方法は、JTextField を拡張して、1 文字だけを保持し、編集不可および無効であることを示す黒/または任意の色になるようにすることです。また、パズルの質問番号を示すカスタム ボーダーを追加します。すべてを GridLayout に入れます。
おそらく、セルに JTable とカスタム レンダラーを使用します。それは少なくとも簡単な解決策になるはずです。もちろん、JTable に慣れるには少し時間がかかりますが、最終的には非常に簡単です。