2008-12-18 6 views
3

Je travaille sur une application interne qui suit un tas de tâches. Je voulais avoir un moniteur de tâches simple qui énumérerait le nom de la tâche et l'état de la tâche. J'ai besoin de cela pour avoir l'air juste un peu sympa, je ne suis pas un concepteur donc tout ce que je fais va être nul, mais un affichage de texte de base ne fonctionnera pas pour les exigences du projet.Dans Java Swing, comment gérer une liste de panneaux permettant de sélectionner plusieurs panneaux?

Ce que je suis essentiellement essaie de faire est de montrer quelque chose de similaire à la fenêtre de téléchargement de Firefox, la fenêtre télécharger I-Tunes, et bien je pourrais nommer plus mais ils se ressemblent tous fondamentalement les mêmes. Dans chacune de ces applications, chacun des «panneaux de progression» est sélectionnable. Donc, pour implémenter ceci, j'ai pensé qu'il serait simple d'utiliser simplement une liste de JPanels avec un JProgressBar et un JLabel, chacun pouvant simplement accepter le focus pour déterminer si lui et d'autres sont sélectionnés. Je pensais que ce serait une tâche facile, mais si j'utilise un JList, il affiche simplement du texte. Je me suis alors dit que je montrerais tous les panneaux de tâches dans un panneau plus grand, mais je ne peux pas obtenir les panneaux intérieurs pour reconnaître la concentration.

Y at-il un modèle pour cela? Existe-t-il une solution standard laminée que je n'ai tout simplement pas trouvée? Ou y a-t-il une meilleure méthode pour cela? Je ne veux pas réinventer la roue, mais je pensais que ça allait être simple.

Répondre

8

Il semble que ce que vous cherchez peut-être JList.

Vous pouvez ajouter vos articles aux JList « s en ajoutant d'abord votre « tâche » à ListModel de l'objet JList (voir la section Create a Model de Java Tutoriels), puis vous voulez attribuer une coutume ListCellRenderer qui sera Acceptez votre "tâche" et affichez le JList en tant que JPanel dans la liste elle-même. La clé ici est de rendre votre ListCellRenderer personnalisé être en mesure d'afficher votre "tâche" dans le JList la façon dont vous voulez l'afficher sur le JList.

Jetez un oeil dans la section Writing a Custom Cell Renderer de la page How to Use Lists de The Java Tutorials. Il décrira comment faire votre ListCellRenderer personnalisé afin que vous puissiez représenter votre "tâche" comme vous le souhaitez.

Pour être bref, vous mettra en œuvre l'interface ListCellRenderer mettant en œuvre le getListCellRendererComponent qui retournera un Component qui est la représentation de votre tâche dans le JList. Vous aurez probablement envie de construire ou d'instancier votre JPanel dans cette méthode et de le renvoyer sous la forme Component.

+0

est ici un code simple montrant comment rendre JPanels dans un JList comme évoqué dans la réponse: http://www.rgagnon.com/javadetails/java-0203.html –

0

Souhaitez-vous un JTable (que vous pouvez définir pour permettre à plusieurs rangées à sélectionner) avec un JPanel interne occupant la cellule unique dans chaque rangée, qui contient un JProgressBar et un JLabel. Ou vous pouvez utiliser un JList avec la même structure que je viens de décrire.

1

La méthode standard de faire ce genre de choses est d'utiliser JTable (ou JList) en tant que conteneur.

Vous ne devez pas utiliser renderes par défaut fot cellules de table, mais vous pouvez spécifier votre propre pour les cellules spécifiques renderer. Jetez un oeil à CellRenderer

Questions connexes