2011-02-13 6 views
0

Je crée un programme en Java, qui contient une jframe et doit être rempli avec certaines données. Les données seront simplement les différentes informations (nom du fichier, chemin du fichier, sa taille) d'un fichier sélectionné par l'utilisateur via JFileChooser. Le JFilechooser sera ouvert en cliquant sur le bouton j qui sera dans la 1ère colonne de chaque ligne et après avoir sélectionné le fichier, les données seront remplies dans les colonnes suivantes pour chaque ligne et le bouton sera ajouté dans la 1ère colonne de la rangée suivante.Mise en page pour un programme Java

Le problème que je suis confronté est dans le choix de la bonne mise en page (conteneur) pour cette data.I je envisage les options suivantes, mais ont des doutes à son sujet:

  1. GridBagLayout: pas sûr que les lignes peuvent être ajouté lors de l'exécution (sur un événement de clic de bouton) et géré efficacement.

  2. JTable: identique à ci-dessus.

Répondre

1

En ce qui concerne les gestionnaires de disposition, consultez MigLayout ou DesignGridLayout. Les deux sont beaucoup mieux que les standards. Si j'implémais votre programme en utilisant des gestionnaires de disposition standard, j'utiliserais des panneaux avec FlowLayout et les empilerais verticalement avec BoxLayout.

+0

je fait comme la mise en page de gridbag. Beaucoup de frappe mais beaucoup de liberté en même temps. Jgoodies formlayout est aussi très bon. – extraneon

+0

Salut, j'ai essayé miglayout et j'ai découvert qu'il était très flexible mais quand j'ajoute des éléments dans le panneau (en utilisant miglayout) il n'ajoute pas de composants dans la séquence requise. – sushobhit

+0

salut, j'ai essayé miglayout et l'ai trouvé très flexible et facile mais quand j'ajoute des éléments dans le panneau (en utilisant miglayout) il n'ajoute pas de composants dans la séquence requise. Par exemple, si j'ajoute 4 composants Label_1, Label_2, Label_3 & Label_4 (Label_1 ajouté à l'index 3 du panneau) dans une rangée puis itérer en utilisant panel.getComponentAt (index), getComponentAt (3) donne Label_1 mais getComponentAt (4) donne Label_3 . Je peux poster du code si cela me donne un indice supplémentaire sur mon problème – sushobhit

2

Vous n'avez jamais besoin d'utiliser un seul gestionnaire de disposition. Vous pouvez créer plusieurs panneaux qui utilisent chacun un gestionnaire de disposition différent et les regrouper tous.

En ajoutant généralement une ligne de données multuple, vous utiliseriez un BoxLayout vertical. Un JTable s'occupe de se peindre lorsque vous ajoutez plus de lignes. Commencez par lire le Swing tutorial. Il y a des sections sur l'utilisation des gestionnaires de disposition et sur l'utilisation de JTable.

1

Essayez la mise en page du groupe. Cela semble être très flexible. Cependant, le code s'avère être un peu complexe.

+0

thnks pour les réponses, je vais explorer les suggestions ci-dessus – sushobhit

+0

un peu complexe est un peu un euphémisme.Cette mise en page a été conçue pour être principalement utilisée par les logiciels pour créer des mises en page, et pas tellement par des humains. Je pense que vous aurez un temps plus facile avec GridBagLayout (qui peut certainement être ajouté au moment de l'exécution et géré ensuite), et beaucoup plus facile avec MIgLayout ou une combinaison de layotus comme suggéré ici aussi. –

+0

Je fais toutes mes formes dans GroupLayout et j'adore leur beauté. Je code manuellement pour cela. Tant que vous comprenez comment il se groupe et indent bien, c'est facile à suivre. –

0

Vous utilisez généralement plusieurs gestionnaires de disposition dans des cadres plus complexes en plaçant des champs connexes dans un panneau et lui donnez son propre gestionnaire de disposition. En outre, vous pouvez modifier les dispositions pendant l'exécution. Ensuite, je pense que vous devez appeler validate() ou quelque chose comme ça.

Pensez aussi à jouer avec un outil graphique comme la démo de jformdesigner ou le pro windowsbuilder de google (gratuit). Même si vous décidez de ne pas utiliser le code généré, vous pouvez au moins voir ce que vous construisez.

Questions connexes