Question

Je veux mettre en œuvre les fonctionnalités suivantes mais je suis confus s'il est possible en Java. Si oui, que comment? S'il vous plaît aider:

Je veux créer un JTable type de table où 1er rang de la table contient les noms de colonnes et une icône dans chaque colonne à savoir dans chaque cellule de 1er rang. En cliquant sur cette icône devrait conduire à la suppression de cette colonne de la table (possible en utilisant MouseListener ??).

J'ai trouvé beaucoup de solution où je peux ajouter le bouton à une cellule JTable mais aucun qui décrit l'ajout du texte et l'icône (avec MouseListener) à une cellule. S'il vous plaît voir si vous pouvez aider et merci beaucoup pour la lecture.

Était-ce utile?

La solution

Vous pouvez créer un TableCellRenderer personnalisé qui étend JLabel. Ce JLabel peut être créé avec une icône (JLabel peut afficher des icônes, à droite ou à gauche du texte). Vous voulez que le getTableCellRendererComponent pour tester wether la ligne étant rendu est le premier ou non, et le cas échéant, définir l'icône, sinon non.

Pour l'action de suppression, vous pouvez ajouter un MouseListener sur la table, et lors du traitement de la méthode mouseClicked, vous pouvez trouver la cellule qui a été cliqué dans en testant la rowAtPoint et columnAtPoint en créant un Point du mouseEvent.getX() et mouseEvent.getY(). Si vous déterminez la première ligne avec l'icône a été cliqué, vous pouvez supprimer la colonne du modèle de colonne.

Si par 1er rang , vous voulez dire en fait l'en-tête de table, vous pouvez créer le même pour le JTableHeader renderer, et régler la MouseListener sur ce composant.

Autres conseils

Je ne comprends pas votre question.

  

Je veux créer une sorte de JTable   table où 1ère rangée de table contient   les noms de colonnes et une icône

Voulez-vous dire la table en-tête, comme la façon dont le tri fonctionne en affichant le nom de la colonne et la direction de tri?

Si oui, alors vous utilisez un moteur de rendu personnalisé pour l'en-tête de table et d'ajouter un MouseListener à l'en-tête pour déterminer la colonne a été cliqué. Vous devriez être en mesure de personnaliser le par défaut Table-tête Renderer pour faire ce que vous voulez.

Ou voulez-vous dire la première ligne de données dans le tableau. Si oui, alors vous avez encore besoin d'utiliser un moteur de rendu personnalisé mais cette fois vous ajoutez le MouseListener à la table pas l'en-tête de table.

Dans les deux cas, vous pouvez utiliser la méthode TableColumnModel.removeColumn () pour supprimer la colonne de la vue de la table.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top