Maison > Java > javaDidacticiel > Comment capturer l'en-tête du tableau dans une image JTable rendue ?

Comment capturer l'en-tête du tableau dans une image JTable rendue ?

Susan Sarandon
Libérer: 2024-11-07 18:04:02
original
695 Les gens l'ont consulté

How to Capture the Table Header in a Rendered JTable Image?

Capture de l'en-tête JTable dans l'image rendue

Problème :

Lors de la capture d'une image d'une JTable, l'en-tête de la table ne n'apparaît pas dans l'image résultante.

原因:

L'en-tête JTable ne fait pas partie de la hiérarchie au moment où le panneau est peint sur l'image, car il l'a fait a été supprimé lorsque le JOptionPane a été fermé.

Solution de Kleopatra :

  1. Ajouter p.addNotify(); avant de créer le BufferedImage pour ajouter l'en-tête à la hiérarchie.
  2. Validez le panneau avec p.validate(); pour forcer une nouvelle disposition récursive de tous les conteneurs, en s'assurant qu'ils croient avoir un homologue.

Solution de camickr :

  1. Utilisez ScreenImage. createImage(p); pour capturer l'image, qui gère la suppression et l'ajout d'en-tête.
  2. Si vous utilisez cette méthode, définissez table.setPreferredScrollableViewportSize(table.getPreferredSize()); pour empêcher le JScrollPane d'interférer avec le rendu.

Code mis à jour :

...
// Without having been shown, fake a all-ready
p.addNotify();

// Manually size to preferred
p.setSize(p.getPreferredSize());

// Validate to force recursive doLayout of children
p.validate();

BufferedImage bi = new BufferedImage(p.getWidth(), p.getHeight(), BufferedImage.TYPE_INT_RGB);

Graphics g = bi.createGraphics();
p.paint(g);
g.dispose();
...
Copier après la connexion

Conclusion :

Les deux solutions restituent efficacement l'en-tête JTable dans l'image résultante. La solution de kleopatra utilise le noyau J2SE, tandis que celle de camickr exploite l'API ScreenImage pour des fonctionnalités supplémentaires. Le choix dépend des exigences spécifiques de l'application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal