用了网上一些的方法,行不通,下面的代码怎么改能去掉咖啡图标或自定义图片,求教
import java.awt.*;import javax.swing.*;
public class Jpro11_5 {
public static void main(String args[]) {
JFrame jf = new JFrame("标签对象的创建");
//setIconImage(new ImageIcon("logo.gif").getImage());.setIconImage(Image image)
//jf.setIconImage(new ImageIcon("c.gif").getImage());
//jf.setIconImage(Toolkit.getDefaultToolkit().createImage("c.gif"));
//Toolkit tk = Toolkit.getDefaultToolkit();
        //Image image = tk.getImage(tk.getClass().getResource("D:\\eclipse\\mywork\\Practice\\src\\image"));
        //jf.setIconImage(image);
JLabel lab = new JLabel();
Container cp = jf.getContentPane();
cp.setLayout(null);
jf.setSize(300, 150);
jf.setLocation(250, 250);
cp.setBackground(Color.YELLOW);
lab.setText("Welcom to Java GUI World!");
lab.setForeground(Color.BLUE);
lab.setBackground(Color.PINK);
lab.setOpaque(true);
lab.setFont(new Font("Tamoha", Font.ITALIC, 20));
lab.setLocation(20, 30);
lab.setSize(320, 50);
cp.add(lab);
jf.setVisible(true);
}
}

解决方案 »

  1. 没有那么复杂吧?你先用绝对路径来试试看,不要用相对路径:
    jf.setIconImage(Toolkit.getDefaultToolkit().createImage("D:\\yourpic.gif"));
      

  2.  frame.setIconImage(new ImageIcon(Example.class.getResource("picasa.png")).getImage());
    Example是主类的名,picasa.png和Example.class放在一起。
      

  3. 按照你讲的我修改成下面的代码,结果运行时eclipse没反应,怎么回事?import java.awt.*;
    import javax.swing.*;
    public class Jpro11_5 {
    public static void main(String args[]) {
    JFrame jf = new JFrame("标签对象的创建");
    jf.setIconImage(Toolkit.getDefaultToolkit().createImage("D:\\c.gif"));
    // jf.setIconImage(new ImageIcon(Jpro11_5.class.getResource("D:\\c.gif")).getImage());
    JLabel lab = new JLabel();
    Container cp = jf.getContentPane();
    cp.setLayout(null);
    jf.setSize(300, 150);
    jf.setLocation(250, 250);
    cp.setBackground(Color.YELLOW);
    lab.setText("Welcom to Java GUI World!");
    lab.setForeground(Color.BLUE);
    lab.setBackground(Color.PINK);
    lab.setOpaque(true);
    lab.setFont(new Font("Tamoha", Font.ITALIC, 20));
    lab.setLocation(20, 30);
    lab.setSize(320, 50);
    cp.add(lab);
    jf.setVisible(true);
    }
    }
      

  4. 运行提示空指针,修改代码如下:import java.awt.*;
    import javax.swing.*;
    public class Jpro11_5 {
    public static void main(String args[]) {
    JFrame jf = new JFrame("标签对象的创建");
    //jf.setIconImage(Toolkit.getDefaultToolkit().createImage("D:\\c.gif"));
     jf.setIconImage(new ImageIcon(Jpro11_5.class.getResource("D:\\c.gif")).getImage());
    JLabel lab = new JLabel();
    Container cp = jf.getContentPane();
    cp.setLayout(null);
    jf.setSize(300, 150);
    jf.setLocation(250, 250);
    cp.setBackground(Color.YELLOW);
    lab.setText("Welcom to Java GUI World!");
    lab.setForeground(Color.BLUE);
    lab.setBackground(Color.PINK);
    lab.setOpaque(true);
    lab.setFont(new Font("Tamoha", Font.ITALIC, 20));
    lab.setLocation(20, 30);
    lab.setSize(320, 50);
    cp.add(lab);
    jf.setVisible(true);
    }
    }
      

  5. 最简单的一个设置icon的例子
      

  6. 怎么我测试时,eclipse半天没反应?
      

  7. 还是提示空指针异常Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:167)
    at Jpro11_1$1.run(Jpro11_1.java:28)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
      

  8. 解决了,你说的对,是用绝对路径,图片大小可以不为16*16,开始我用的是我QQ截图的图片,用eclipse运行时,一直没反应,换用其他图片,就可以了,谢谢
      

  9. 开始我用的图片是QQ截图的,后来换了图片(网上下载),就可以了,应该是QQ截图不行,另一点,必须使用绝对路径,你问的什么意思?
      

  10. 看书的话,Swing Hacks里有一个讲的是把图片和音频文件打包的jar里的。
      

类似问题 »