2011-07-22 5 views
0

Je veux charger une image de mon ordinateur dans des graphiques 2D afin que je puisse l'éditer après et puis je veux l'ajouter à JPanel. Si vous avez besoin de voir mon projet, je peux vous l'envoyer.Java: Charger l'image du fichier, éditer et ajouter à JPanel

void loadImage() 
{ 

    FileDialog fd = new FileDialog(new Frame(), "Please choose a file:", FileDialog.LOAD); 
    fd.show(); 
    if (fd.getFile() != null) 
    { 
     File fil = new File(fd.getDirectory(), fd.getFile()); 
     strDirectory = fd.getDirectory(); 
     strFileType = fd.getFile(); 
     mainImage.setIcon(new ImageIcon(fil.toString())); 
     getFileList(strDirectory); 
     checkFileType(strFileType); 
    } 
} 

Merci à l'avance

+0

Qu'est-ce que vous essayez d'atteindre exactement? – Moonbeam

+0

Quelle est votre question? –

Répondre

2

Pour charger votre image dans la mémoire, vous pouvez utiliser ImageIO.read(File). Pour le modifier par la suite, obtenir une instance Graphics2D de lui en appelant createGraphics():

BufferedImage img = ImageIO.read(yourFile); 
Graphics2D g = img.createGraphics(); 
// Draw here on the graphics 
g.dispose(); 

Vous pouvez même activer l'anti-aliasing en définissant un RenderingHint avant de tirer:

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
        RenderingHints.VALUE_ANTIALIASING_ON); 

Ensuite, pour l'ajouter à un JPanel, créez votre JComponent personnalisée et d'ajouter une instance de ce composant à votre JPanel:

+0

+1 extends JComponent – mKorbel

1

pour le chargement de l'image, vous devez utiliser ImageIO objet avec la méthode read(File file)see docs. Ensuite, vous obtiendrez BufferedImage instance de laquelle vous pouvez apporter vos modifications par l'intermédiaire de Graphics2D instance que vous obtiendrez en appelant createGraphics() sur l'instance d'image see docs. La dernière chose, la méthode de remplacement paintComponent() de JPanel ou mieux JComponentsee docs et là, vous pouvez dessiner votre image sur Graphics exemple que vous obtiendrez en tant que paramètre dans paintComponent(Graphics g) méthode en appelant drawImage(Image img, int x, int y, ImageObserver observer)see docsImageObserver ensemble à null.

+3

Ne pas surcharger 'paint (...)', remplacer à la place 'paintComponent (...)'. – Moonbeam

+0

Droit, ma faute, merci .. – Sorceror

2

s'il vous plaît lire ce tutoriels sur Icon in Swing et votre image/ImageIcon serait par placé à JLabel, cette façon d'éliminer tous les problèmes sont venus de peinture/paintComponents ...

+0

+1 pour ne pas * étendre * tout composant. –