2011-08-02 4 views
4

J'ai rencontré un problème. Mon image est trop grande pour agrandir le JMenuItem correspondant. Je ne veux pas développer des vélos commeJMenuItem ImageIcon trop grand

ImageIcon image = new ImageIcon(new ImageIcon("/home/template/img.jpg") 
     .getImage().getScaledInstance(32, 32, Image.SCALE_DEFAULT)); 

est-il un autre moyen d'accomplir cela?

Répondre

13

Si vous ne voulez pas mettre l'image à l'échelle dans le code (je suppose que c'est ce que vous voulez dire dans la question?), Pourquoi ne pas simplement créer l'image source avec cette taille? La solution la plus simple est parfois la meilleure!

De même, getScaledInstance() est généralement une mauvaise idée. This explique pourquoi et donne de meilleures options pour redimensionner l'image. Si vous utilisez l'image ailleurs, il vaut la peine de lire cet article et de le mettre à l'échelle en utilisant une meilleure technique (comme graphics.drawImage()) mais si vous l'utilisez simplement dans le menu, le redimensionnement de l'image source est probablement la meilleure chose à faire.

Si vous allez redimensionner:

BufferedImage image = ImageIO.read("img.jpg"); 
BufferedImage ret = new BufferedImage(32,32,BufferedImage.TYPE_RGB); 
ret.getGraphics().drawImage(image,0,0,32,32,null); 

Quelque chose comme ça devrait vous donner l'image, vous pouvez créer votre ImageIcon en utilisant ret.