2013-06-29 8 views
9

मैं जावा में आइकन छवि को सेट करने के तरीके पर हर जगह खोज रहा हूं, और यह हमेशा काम नहीं कर रहा है या यह मुझे त्रुटियां देता है। यहाँ, अपने मुख्य विधि में वह जगह है जहाँ मैं कोड डाल:जावा में सेट आइकन छवि

public static void main(String[] args) { 
    Game game = new Game(); 

    // This right here! 
    game.frame.setIconImage(new ImageIcon("/Icon.png").getImage()); 

    game.frame.setResizable(false); 
    game.frame.setTitle(title); 
    game.frame.add(game); 
    game.frame.pack(); 
    game.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    game.frame.setLocationRelativeTo(null); 
    game.frame.setVisible(true); 

} 

छवि के लिए मेरे पथ "% परियोजना%/res/Image.png" है और मैं बस आगे और पहुँच जाना /Image.png का उपयोग मेरा रेज फ़ोल्डर (जैसा कि मैंने अपनी परियोजना के अन्य हिस्सों में किया है) मैंने इसे एक आइकन फ़ाइल में भी परिवर्तित कर दिया है, और कोशिश की है, लेकिन यह तय करता है कि डिफ़ॉल्ट जावा आइकन का उपयोग करना है।

+2

यह हर 16 घंटों में एक बार पूछता है। आप भविष्य में खोजना चाहेंगे। –

+0

@AndrewThompsons टिप्पणी करने के लिए +1। एक पढ़ा है [यहां] (http://stackoverflow.com/questions/13796331/jar-embedded-resources-nullpointerexception/13797070#13797070)। यह आपके जार में एम्बेडेड संसाधनों की अधिकांश समस्याओं के माध्यम से आपकी मदद करनी चाहिए। –

+0

कृपया ध्यान दें कि मैंने आपका [टैग: सेट] टैग हटा दिया है क्योंकि आपके प्रश्न में "सेट" या सामान्य रूप से संग्रह की प्रोग्रामिंग अवधारणा से कोई लेना देना नहीं है। मैंने [टैग: स्विंग] टैग जोड़ा है क्योंकि यह शीर्षक आपके प्रश्न के लिए बहुत प्रासंगिक है। –

उत्तर

8

आपकी समस्या के लिए उपयोग डिफ़ॉल्ट टूलकिट अक्सर छवि के लिए गलत जगह की तलाश की वजह से है, या यदि आपके वर्गों और छवियों को एक जार फ़ाइल में हैं, तो फाइलों की तलाश में जहां डॉन फ़ाइलें अस्तित्व में नहीं है मेरा सुझाव है कि आप दूसरी समस्या से छुटकारा पाने के लिए संसाधनों का उपयोग करें।

जैसे,

// the path must be relative to your *class* files 
String imagePath = "res/Image.png"; 
InputStream imgStream = Game.class.getResourceAsStream(imagePath); 
BufferedImage myImg = ImageIO.read(imgStream); 
// ImageIcon icon = new ImageIcon(myImg); 

// use icon here 
game.frame.setIconImage(myImg); 
+0

जब मैं इसका उपयोग करता हूं तो यह setIconImage पर एक त्रुटि फेंकता है, _ विधि सेट IconImage (छवि) प्रकार जेएफआरएम तर्कों (छवि आइकन) _ के लिए लागू नहीं है और यह इसे IconImages सेट करने के लिए बदलता है या छवि छवि को छवि में बदलने के लिए कहता है। – Shzylo

+0

@Shzylo: परिवर्तन देखें। –

+0

धन्यवाद कि आपने काम किया :) बस कुछ सामान को कोशिश/पकड़ में रखना पड़ा। – Shzylo

7

इस

frame.setIconImage(Toolkit.getDefaultToolkit().getImage("Icon.png")); 
+0

यह तब तक काम करता जब तक कि मैंने अपनी जार फ़ाइल निर्यात नहीं की। – Shzylo

+1

@Shzylo: कोई आश्चर्य नहीं है। –

0

मैं इस का उपयोग करें:

import javax.imageio.ImageIO; 
import java.awt.*; 
import java.awt.image.BufferedImage; 
import java.io.IOException; 
import java.io.InputStream; 

public class IconImageUtilities 
{ 
    public static void setIconImage(Window window) 
    { 
     try 
     { 
      InputStream imageInputStream = window.getClass().getResourceAsStream("/Icon.png"); 
      BufferedImage bufferedImage = ImageIO.read(imageInputStream); 
      window.setIconImage(bufferedImage); 
     } catch (IOException exception) 
     { 
      exception.printStackTrace(); 
     } 
    } 
} 

बस जगह अपनी छवि संसाधन फ़ोल्डर में Icon.png कहा जाता है और एक वर्ग से एक वर्ग का विस्तार अंदर पैरामीटर के रूप में खुद के साथ उपरोक्त विधि फोन Window परिवार जैसे JFrame या JDialog:

IconImageUtilities.setIconImage(this); 
संबंधित मुद्दे