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 :
Solution de camickr :
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(); ...
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!