2010-04-10 3 views
1

Je suis sur le point de créer une application de mots croisés java, mais je ne suis pas sûr des paquets à utiliser pour dessiner la grille des mots croisés. Je sais que vous pouvez dessiner manuellement des grilles avec Graphics2D etc. mais je ne suis pas sûr que ce soit la façon la plus simple de le faire car j'ai besoin de champs de texte dans les carrés de la grille.Java Crossword Application - quel paquet utiliser?

Tout le monde a des suggestions quant à la création de la grille de mots croisés. Peut-être utiliser un rendu JTable et personnalisé pour les cellules.

Répondre

2

En fait, je ne pense pas que vous avez besoin textfields sur les places de la grille, mais juste d'écrire chaque lettre unique pour chaque cellule de la grille ..

Pour vous éditer permettent attrapez juste des coups de clavier sur le composant que vous utilisez et ensemble des mots croisés en fonction de ce que l'utilisateur écrit. Faire cela de cette façon serait assez simple car vous pouvez utiliser un tableau bidimensionnel arrière qui stocke toute la grille, puis lorsque l'utilisateur sélectionne une définition, vous commencez simplement à remplir des lettres simples chaque fois que les touches sont tapées à partir de la première cellule de la définition .. votre routine de dessin devra juste être capable de dessiner la grille et les lettres du centre à l'intérieur des cellules, rien de plus ..

Un JTable pourrait fonctionner mais il pense que c'est surdimensionné pour votre problème, parce que vous allez finir interface avec beaucoup de choses dont vous n'avez pas besoin du tout ..

EDITER (pour commentaire):

Je l'ai fait quelque chose de semblable façon suivante: vous pouvez avoir une classe de cellules

class Cell 
{ 
    boolean isBlank; 
    char value; 
} 

avec un réseau de cellules que vous obtenez votre grille:

Cell[][] gamefield = new Cell[15][15]; 

puis à l'intérieur paint() vous pouvez facilement itérer :

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); 
    } 
} 

Tout simplement parce que j'ai encore un résultat de capture d'écran était quelque chose comme alt text http://img3.imageshack.us/img3/7374/68514939.png

+0

@Jack Merci beaucoup pour votre réponse. Que utiliseriez-vous pour dessiner la grille alors? Une collection de carrés de Graphics2D? – Alex

+0

Je pensais que je pourrais juste utiliser un logiciel de retouche d'image pour créer tout le type possible de carrés de grille et charger le dans une grille. – Alex

+0

vous voulez dire toutes les lettres? Vous pouvez utiliser __graphics.drawString() __ .. vous pouvez aussi facilement le positionner en obtenant la largeur du caractère (donc vous pouvez le centrer) avec __graphics.getFontMetrics(). StringWidth ('A') __ – Jack

0

Cela devrait être au moins une solution simple. Bien sûr, cela prend un peu de temps pour s'habituer à JTable, mais finalement c'est assez simple.

0

Avez-vous pensé à JavaFX? JavaFX vous permettra de créer des «graphes de scène» basés sur des vecteurs/graphiques édités en utilisant Adobe Photoshop/Inkscape etc.

Sinon, la manière la plus simple serait d'étendre JTextField de manière à ce qu'il ne contienne que 1 caractère et soit noir/ou n'importe quelle couleur pour indiquer non-éditable et désactivé. En outre, ajoutez une bordure personnalisée pour indiquer le numéro de question de puzzle. Mettez tout dans un GridLayout.

Questions connexes