Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich hätte zwei Probleme. Erstens: das bild ist 16*16 pixel groß und im jpg format und wird trotzdem nicht in mein JMenuItem geladen. Habe beide Methoden (wie oben) versucht, woran kann es denn noch liegen?
Und zweitens: diese erste variante habe ich woanders gelesen, verstehe sie aber nicht richtig. was hat es damit auf sich?
Die erste Variante kenne ich vor allem im Zusammenhang mit JARs. Wenn das Icon im JAR liegt, kann man es nicht einfach laden, als laege es im Dateisystem, sondern muss ueber getResource() gehen.
folgendes Programm funktioniert bei XP, Vista und Debian-Linux. Compiliert mit 1.6.0.
Bei den Icon's ist auf Groß/Kleinschreibung zu achten. Die Icon's müssen in diesem Fall im Verzeichniss der .class Datei liegen.
Im Quelltext ist kommentiert, was bei einem fehlenden Icon passiert.
Code:
import javax.swing.*;
import java.awt.*;
public class Test extends JFrame{
JMenuBar mn01 = new JMenuBar();
JMenu mnDatei = new JMenu("Datei");
JMenuItem ico1 = new JMenuItem("Icon 1 (*.jpg)");
JMenuItem ico2 = new JMenuItem("Icon 2 (*.png)");
JMenuItem ico3 = new JMenuItem("Icon 3 (*.gif)");
//------------------------------------------------------------------------------------------------
public Test(){
ico1.setIcon(new ImageIcon(getClass().getResource("Rpg2000.jpg"))); //Bei fehlendem Icon: java.lang.NullPointerException
ico2.setIcon(new ImageIcon("Rpg2000.png")); //Bei fehlendem Icon: keine Exception, aber Bild wird nicht angezeigt
ico3.setIcon(new ImageIcon(ClassLoader.getSystemResource("Rpg2000.gif"))); //Bei fehlendem Icon: java.lang.NullPointerException
setJMenuBar(mn01);
mn01.add(mnDatei);
mnDatei.add(ico1);
mnDatei.add(ico2);
mnDatei.add(ico2);
mnDatei.add(ico3);
}
//------------------------------------------------------------------------------------------------
public static void main(String args[]){
Test t = new Test();
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t.setSize(200, 100);
t.setLocationRelativeTo(null);
t.setVisible(true);
}
//------------------------------------------------------------------------------------------------
}
ich verstehs echt nicht.. es wird auch keine Exception geworfen und das Icon befindet sich in dem Verzeichnis. Auf groß/klein-schreibung wurde geachtet.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
class Listing2703 extends JFrame{
public Listing2703(String t){
super(t);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JMenuBar bar = new JMenuBar();
JMenu data = new JMenu("Datei");
JMenuItem item1 = new JMenuItem("Item1", 't');
try{
item1.setIcon(new ImageIcon(getClass().getResource("Rpg2000.gif")));
}
catch(NullPointerException ex){
System.out.println("nix");
}
JMenuItem item2 = new JMenuItem("Item2", 'e');
data.add(item1); data.add(item2);
bar.add(data);
setJMenuBar(bar);
pack();
setVisible(true);
}
public static void main(String[] args){
Listing2703 frm = new Listing2703("Titel");
}
}
Mit getResource() erhaelt man einen URL, vielleicht kannste den einfach mal anzeigen lassen. Ich seh auch grad, dass du im ersten Post schreibst, dass du ein JPG-File mit der Endung gif hast, vielleicht liegts auch daran.