Le code fourni comporte un JFrame et son extension JPanel correspondante. Alors que la méthode repaint() du JPanel est appelée à plusieurs reprises, elle ne parvient pas à exécuter la méthode paintComponent(). Cela a conduit à soupçonner que l'objet imageDimension pourrait être la source du problème.
Bien que le contexte fourni ne fasse pas explicitement référence aux tableaux d'octets, il Il semble que l'objectif soit de créer des vignettes en niveaux de gris et de les attribuer à l'icône d'un composant. L'exemple de code ci-dessous propose une méthode pour convertir des exemples d'icônes existantes en niveaux de gris et utiliser setIcon() pour mettre à jour le composant. Cette approche peut être appliquée à n'importe quelle image.
Il convient de noter que la conversion en niveaux de gris susmentionnée peut être obtenue en utilisant ColorConvertOp ou en mettant à jour le composant lui-même au lieu de son icône.
importer java.awt.*;<br>importer javax.swing.*;</p> <p>public class IconExample {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">public static void main(String[] args) { // Create a list of icons List<Icon> icons = new ArrayList<>(); icons.add(new ImageIcon("image1.png")); icons.add(new ImageIcon("image2.png")); // Create a panel to hold the icons JPanel panel = new JPanel(); panel.setLayout(new GridLayout(1, icons.size())); // Add the icons to the panel for (Icon icon : icons) { panel.add(new JLabel(icon)); } // Create a frame for the panel JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); frame.add(panel); // Make the frame visible frame.setVisible(true); // Create a timer to update the icons Timer timer = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // Shuffle the icons Collections.shuffle(icons); // Update the icons in the panel for (int i = 0; i < icons.size(); i++) { panel.getComponent(i).setIcon(icons.get(i)); } // Repaint the panel panel.repaint(); } }); // Start the timer timer.start(); }
}
Cet exemple illustre l'utilisation de Collections.shuffle pour randomiser l'ordre des icônes et mettre à jour les icônes dans le panneau toutes les secondes. La méthode repaint() garantit que les modifications sont visibles à l'écran et que les icônes sont continuellement mises à jour.
En proposant cette approche alternative, nous démontrons que le problème est lié au La méthode paintComponent() peut n'être pas liée à l'objet imageDimension et découle plutôt de l'implémentation spécifique des graphiques et de la gestion des images dans votre original. code.
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!