Applets in Frames & Bilder

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hy zusammen!

Ich hab ein Prob bei dem Ihr mir hoffentlich helfen könnt. Weder FAQ noch Forensuche hat mir helfen können.

Ich habe folgende Anwendung, die verschiedene Applets integriert. Je nach welcher Menuaction ruft es die jeweiligen Applets auf. Mein Problem ist, dass ich in einem Applet ein Bild integriere. Im Appletviewer wird auch alles korrekt dargestellt.
Wenn ich allerdings die Anwendung aufrufe, integriert er das Applet nur, wenn kein Bild drin ist. Ansonsten kommt die Java.NullPointerException. Wahrscheinlich muss ich die Grafik im Frame initialisieren, das habe ich in der Graphics Methode versucht. geht aber auch nicht... *ratlos*
Compilieren lässt sich alles...

Anwendung:
Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class TestTool extends Frame implements ActionListener
{
 	static MenuItem spei = new MenuItem ("Speichern");
    	static MenuItem exit = new MenuItem ("Beenden");
    	static MenuItem einsts3 = new MenuItem ("Einstellungen 3");
    	static MenuItem einsts2 = new MenuItem ("Einstellungen2");
    	static MenuItem art = new MenuItem ("Artikel Import");
    	static MenuItem kun = new MenuItem ("Kunden Import");
    	static MenuItem inf = new MenuItem ("Info");
    	static Frame f;
        
     //Applets erzeugen
	static Start applet;
	static Einst2 aeinst2 = new Einst2();
	static Einst aeinst3 = new Einst();
	static Speicher speich = new Speicher();
      	static Exit ex = new Exit();
    	static Kunde k = new Kunde();
   	static Artikel ar = new Artikel();
        static Info info = new Info();

  public static void main (String[] args) {

    applet = new Start();

	f = new Frame ("Tool Prototype");
    
    	f.addWindowListener(new WindowAdapter() 
    	{
      		public void windowClosing (final WindowEvent e) 
      			{
        			System.exit(0);
      			}
    	});
    	
    f.setMenuBar(getMenubar());
    f.setSize(800,600);
    f.setVisible(true);
    f.add("Center",applet);
    applet.init();      
}

		public void actionPerformed(ActionEvent event)
		{	
		 if(event.getSource()== einsts2)
			{	
	   		   f.remove(applet);
	   		   aeinst3.stop();
	   		   f.remove(aeinst3);
	   		   f.remove(speich);
	   		   f.remove(info);
	   		   f.remove(ex);
	   		   f.remove(k);
	   		   f.remove(ar);
	   		   f.add("Center",aeinst2);
	   		   aeinst2.init(); 
	   		   aeinst2.start(); 
			}
		 if(event.getSource()== einsts3)
			{	  
	   		   f.remove(applet);
	   		   aeinst2.stop();
	   		   f.remove(aeinst2);
	   	   	   f.remove(speich);
	   	   	   f.remove(info);
	   	 	   f.remove(ex);
	   		   f.remove(k);
	   		   f.remove(ar);
	   		   f.add("Center",aeinst3);
	   		   aeinst3.init(); 
	   		   aeinst3.start(); 
			}
		if(event.getSource()== spei)
			{	
	  		   f.remove(aeinst2);
	   		   f.remove(aeinst3);
	   		   f.remove(info);
	   		   f.remove(ex);
	   		   f.remove(k);
	   		   f.remove(ar);
	   		   f.remove(applet);
	   		   f.add("Center",speich);
	   		   speich.init(); 
			}
		if(event.getSource()== exit)
			{	
	   		   f.remove(aeinst2);
	   		   f.remove(aeinst3);
	   		   f.remove(speich);
	   		   f.remove(info);
	   		   f.remove(k);
	   		   f.remove(ar);
	   		   f.remove(applet);
	   		   f.add("Center",ex);
	   		   ex.init();
			}
		if(event.getSource()== kun)
			{	  
	   		   f.remove(aeinst2);
	   		   f.remove(aeinst3);
	   		   f.remove(ex);
	   		   f.remove(info);
	   		   f.remove(speich);
	   		   f.remove(ar);
	   		   f.remove(applet);
	   		   f.add("Center",k);
	   		   k.init(); 
			}
		if(event.getSource()== art)
			{	
	   		   f.remove(aeinst2);
	   		   f.remove(aeinst3);
	   		   f.remove(ex);
	   		   f.remove(k);
	   		   f.remove(info);
	   		   f.remove(speich);
	   		   f.remove(applet);
	   		   f.add("Center",ar);
	   		   ar.init(); ;
			}	
		 if(event.getSource()== inf)
			{	
	   		   f.remove(aeinst2);
	   		   f.remove(aeinst3);
	   		   f.remove(ex);
	   		   f.remove(k);
	   		   f.remove(ar);
	   		   f.remove(speich);
	   		   f.remove(applet);
	   		   f.add("Center",info);
	   		   info.init(); ;
			}	
		}
		
  static MenuBar getMenubar (){
    	
    	MenuBar menueLeiste = new MenuBar ();
    	Menu datei = new Menu ("Datei");
       
        spei.addActionListener(new TestTool());
        exit.addActionListener(new TestTool());
       
    	datei.add (spei);
    	datei.add (exit);
    	menueLeiste.add(datei);
		
    	Menu einst = new Menu ("Einstellungen");
    	
    	einsts2.addActionListener(new TestTool());
    	einsts3.addActionListener(new TestTool());
    	
    	einst.add(einsts2);
    	einst.add(einsts3);
    	menueLeiste.add(einst);
    	
    	Menu sync = new Menu ("Synchronisieren");
        
        art.addActionListener(new TestTool());
        kun.addActionListener(new TestTool());
        
    	sync.add(art);
    	sync.add(kun);
    	menueLeiste.add(sync);
    	
    	Menu help = new Menu ("Hilfe");
    	
    	inf.addActionListener(new TestTool());  	
    	help.add(inf);
    	menueLeiste.add(help);
    	
    	return menueLeiste;
	}
  public void paint(Graphics g)
	{
	   Image i = getToolkit().getImage("bild.jpg");	 	
	}
}

Applet
Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Start extends Applet
{
	private Label eingabeLabel, eingabeLabel2;
	public Image i;
	
	public void init()
	{
		setSize(800,600);
		setLayout(null);
	        i = getImage(getDocumentBase(), "bild.jpg");
		
		eingabeLabel = new Label("Willkommen beim Prototyp V1.0");
		eingabeLabel.setBounds(250,150,500,20);
		add(eingabeLabel);
		
		eingabeLabel2 = new Label("Bitte geben Sie zum Datenautausch in der Menüleiste Ihre Daten ein");
		eingabeLabel2.setBounds(190,200,500,20);
		add(eingabeLabel2);
        
        repaint();
	}
    	
	public void paint(Graphics g)
	{
	    g.setColor(Color.black);
	    g.drawImage(i, 350,50, this);	 	
	}
}

Sicherlich ist einiges was in dem Code steht nicht besonders "effizient" und verbesserbar, daher bitte ich um Nachsicht, da meine Java Kenntnisste inzwischen etwas eingerostet sind. (Wenn man nicht dauernd coded verliert man schnell sein Wissen wie es scheint) Mit geht es primär darum das Bild in der Anwendung durch das Applet anzuzeigen.

Ich hoffe meine Fragestellung ist einigermassen verständlich und lösbar.
Danke im Vorraus...
 

L-ectron-X

Gesperrter Benutzer
ImageIcon ist eine Klasse aus dem Swing-Paket und läuft nicht in Java-Versionen unterhalb von Java 1.2.
Daher ist das eher der richtige Ansatz für JApplets.

Bilder werden in Applets so geladen:
Code:
image = getImage(new URL(getCodeBase(), "bild.jpg")); //u.U. relativen Pfad setzen
getDocumentBase() gibt den absoluten URL zum HTML-Dokument zurück, in welchem dein Applet eingebunden wurde.
getCodeBase() gibt den URL der Directory zurück, in dem dein Applet gespeichert ist.
Beides kann benutzt werden. In deinem Fall würde ich aber die getCodeBase()-Methode benutzen, weil du ja dein Applet nicht über ein HTML-Dokument startest.

Stecken das Applet und das Bild in einem Jar-Archiv, muss das Bild so geladen werden:
Code:
image = getImage(getClass().getResource("bild.gif")); //u.U. relativen Pfad setzen
 
G

Guest

Gast
hm, wenn ich
Code:
 i = getImage(new URL(getCodeBase(), "bild.jpg"));
verwende, kommt die Fehlermeldung beim Compilieren:
Start.java:14: cannot resolve symbol
symbol : class URL
location: class Start


wenn ich
Code:
i = getImage(getClass().getResource("bild.jpg"))
verwende, scheint das gegenüber:
Code:
i = getImage(getDocumentBase(), "bild.jpg");
nichts zu ändern.
immernoch fehlerfreie compilierung, aber NullPointerException beim ausführen der Anwendung...

:bahnhof:
 
G

Guest

Gast
achso , also im applet wird das bild ja wie gesagt angezeigt!
Nur wenn ich das Applet in die Anwendung integriere geht es nicht....
 

L-ectron-X

Gesperrter Benutzer
Für dein erstes Beispiel muss das Package java.net bzw. die Klasse java.bet.URL importiert werden.
Im letzten Beispiel bekommst du eine NullPointerException, weil das Bild am angegebenen Ort nicht zu finden ist.
Daher müsste der Pfad angepasst werden.
Im Übrigen verhält sich ein Applet ähnlich wie ein Panel.
 
G

Guest

Gast
Hm, aber warum einen Pfad angeben, wenn die Bilddatei genau dort liegt wo das Applet und die Anwendung liegen?
Das Applet findet das Bild ja auch, nur die Anwendung, die das Applet integriert, findet es nicht...
 

L-ectron-X

Gesperrter Benutzer
Weil Applets und Applikationen eben anders gestrickt werden.
Der Hinweis mit dem Panel kam nicht zufällig...

Setze den Inhalt (Bild) auf ein eigenes (abgeleitetes) Panel, dieses Panel setzt du dann wahlweise in den Frame, oder ins Applet, je nach dem, ob die Anwendung im Internet laufen soll, oder auf dem Desktop.
Da Applets und Applikationen sich Bilddateien auf einem anderen Weg beschaffen, sollte das Panel das Bild jeweils vom Applet oder vom Frame zugewiesen bekommen.
 
G

Guest

Gast
WUNDERBAR, hat jetzt funktioniert.
Habe einfach im Applet folgendes verwendet, und schon hat auch die Anwendung das Bild gefunden.

Code:
Image i = Toolkit.getDefaultToolkit().getImage("bild.gif");
[/code]
 

L-ectron-X

Gesperrter Benutzer
Für das Applet funktioniert das meines Wissens nur lokal. Sobald du das Applet das Bild im Internet laden lässt, wird es nicht mehr funktionieren. Daher sollten Applikation und Applet jeweils das Bild wie benötigt laden und dann dem Panel zur Anzeige übergeben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Java 8 & Eigene Applets Java Basics - Anfänger-Themen 3
Sogomn Einbinden eines Applets Java Basics - Anfänger-Themen 5
M Erste Schritte applets Java Basics - Anfänger-Themen 7
F Applets signieren. Java Basics - Anfänger-Themen 5
OnDemand Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
J Applets und getCodeBase() Java Basics - Anfänger-Themen 2
B lokales JRE bei Applets nutzen ? Java Basics - Anfänger-Themen 4
T Die Zukunft von Java Applets sicher? Java Basics - Anfänger-Themen 15
P Applets im Browser Java Basics - Anfänger-Themen 4
SheldoN Sound abspielen nach Buttonklick in Applets Java Basics - Anfänger-Themen 17
S JInternalFrame in Applets? Java Basics - Anfänger-Themen 9
K mehrer applets sollen sich gegenseitig verständigen können Java Basics - Anfänger-Themen 3
F Applets mit Appletloader in lauffähige Datei exportieren Java Basics - Anfänger-Themen 3
N Applets: unterschiedliche Java Versionen Java Basics - Anfänger-Themen 7
N Applets: Objekte vom Server laden Java Basics - Anfänger-Themen 4
L Probleme bei Offline-Nutzung von Java-Applets Java Basics - Anfänger-Themen 6
B Einfache Applets für Webseite Java Basics - Anfänger-Themen 10
M Frage zum Aufruf eines Applets aus einer HTML - Datei Java Basics - Anfänger-Themen 3
B Applets Java Basics - Anfänger-Themen 3
A java cache löschen/ausschalten bzw. Browser Applets entwickeln Java Basics - Anfänger-Themen 9
U Objekte und Applets Java Basics - Anfänger-Themen 9
Semox Fehler in Eclipse vor Start eines Applets anzeigen? Java Basics - Anfänger-Themen 2
S Wo speichere ich Bilder für Applets (Netbeans) Java Basics - Anfänger-Themen 5
A Ausdrucken eines Applets Java Basics - Anfänger-Themen 10
N Applets Java Basics - Anfänger-Themen 2
J java applets bilder? Java Basics - Anfänger-Themen 11
D Grenzen eines Applets Java Basics - Anfänger-Themen 9
Screen Eine Frage zu moueMove in applets und deren Vergleich Java Basics - Anfänger-Themen 11
F Unterschied im Einfügen von Bildern in Applets vs Applications Java Basics - Anfänger-Themen 6
S Java Applets Java Basics - Anfänger-Themen 2
Developer_X !!!Help with Applets!!! PLEASE Java Basics - Anfänger-Themen 14
0 Problem beim Starten des Applets Java Basics - Anfänger-Themen 2
M Anfängerfragen zu Java Applets Java Basics - Anfänger-Themen 4
G Speichern eines Applets (Speichern von Daten - Applikation) Java Basics - Anfänger-Themen 31
C Textausgabe auf Panelen innerhalb eines Applets Java Basics - Anfänger-Themen 6
G Weder IE noch Firefox zeigen mir Java Applets an Java Basics - Anfänger-Themen 5
Tapsi Wichtige Fragen zu Applets Java Basics - Anfänger-Themen 2
H Applets tuts nicht Java Basics - Anfänger-Themen 5
D Applets und jar Java Basics - Anfänger-Themen 6
7 Applets - einfachste Grundlagen Java Basics - Anfänger-Themen 24
M Umlaute in Java Applets? Java Basics - Anfänger-Themen 3
B Java Applets kommunizieren lassen? Java Basics - Anfänger-Themen 6
J 2 Applets zu 1 zusammenfassen? Java Basics - Anfänger-Themen 7
S applets im internet ablaufen lassen Java Basics - Anfänger-Themen 6
S MidiIN bei Applets Java Basics - Anfänger-Themen 3
B Unklarheit bei Applets und Runtime Java Basics - Anfänger-Themen 5
G Wie lass ich Applets anzeigen Java Basics - Anfänger-Themen 6
F Applets und die paint-Methode Java Basics - Anfänger-Themen 3
F Verwenden von Input innerhalb eines Applets Java Basics - Anfänger-Themen 3
M gehen applets auch in .jar dateien? Java Basics - Anfänger-Themen 3
S Verständnisfragen / Textausgabe (Java Applets) Java Basics - Anfänger-Themen 4
G Java Applets Java Basics - Anfänger-Themen 4
G Bilder in den Hintergrund eines Applets einfügen Java Basics - Anfänger-Themen 16
D *.mp3 in Applets nutzen Java Basics - Anfänger-Themen 23
N Thread, Applets & Co. Java Basics - Anfänger-Themen 3
A Problem beim Signieren eines Applets Java Basics - Anfänger-Themen 4
R Noch eine Frage: Breite des Applets im Browser ermitteln Java Basics - Anfänger-Themen 7
MasterEvil Größe signierter Applets Java Basics - Anfänger-Themen 5
G Transparente Hintergrundfarbe eines Applets Java Basics - Anfänger-Themen 8
X Sind Traffic-Probleme durch Java Applets möglich? Java Basics - Anfänger-Themen 3
T Problem mit Objekten (bei Applets) Java Basics - Anfänger-Themen 6
D Netbeans IDE 5.0 und Applets Java Basics - Anfänger-Themen 4
J Grundsätzliche Fragen zur Anwendung von Applets Java Basics - Anfänger-Themen 12
T Fehler beim Laden eines Applets Java Basics - Anfänger-Themen 16
I Applets und Threads Java Basics - Anfänger-Themen 6
Chucky Rekursion grafisch darstellen anhand eines Applets Java Basics - Anfänger-Themen 14
J Java Applets schreiben welches JDK wählen? Java Basics - Anfänger-Themen 5
S Probleme bei Applets in HTML Java Basics - Anfänger-Themen 11
I Applets Java Basics - Anfänger-Themen 4
S Application starten / Applets + 3rd Person APIs Java Basics - Anfänger-Themen 10
F Wie kommen die Applets zum Client? Java Basics - Anfänger-Themen 7
P Lokale Dateien in Java-Applets einlesen Java Basics - Anfänger-Themen 2
P meine java applets laufen nicht bei meinen freunden Java Basics - Anfänger-Themen 5
M Java und Applets (Hilfe!!!) Java Basics - Anfänger-Themen 5
CptK Interface 2 von einander unabhängige Frames mit Panel gleichzeitig nutzen Java Basics - Anfänger-Themen 66
I In der Mitte eines Frames mit BorderLayout etwas malen Java Basics - Anfänger-Themen 7
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
S Position eines Frames Java Basics - Anfänger-Themen 3
S Frames Verbinden Java Basics - Anfänger-Themen 19
S Auf eine variable/objekt eines frames zugrifen Java Basics - Anfänger-Themen 22
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
D Frame schließt gleich alle Frames Java Basics - Anfänger-Themen 5
U [Problem] Handling multiple frames Java Basics - Anfänger-Themen 5
G Aufrufen eines Frames aus einer anderen Klasse Java Basics - Anfänger-Themen 6
A Intelligente Anordnung von Frames in einer Fläche Java Basics - Anfänger-Themen 4
D Compiler-Fehler Frames verbinden Java Basics - Anfänger-Themen 6
S Mehrere Frames Java Basics - Anfänger-Themen 4
D JMenuBar und Hintergrund eines Frames Java Basics - Anfänger-Themen 2
M Zwei Frames ein ActionListener Java Basics - Anfänger-Themen 21
K Schließen eines Frames Java Basics - Anfänger-Themen 4
G Java-Frames funktionieren nach Neuinstallation nicht mehr. Java Basics - Anfänger-Themen 3
S Frames schließen Java Basics - Anfänger-Themen 14
D Sound in Frames möglich? EDIT Class Clip Java Basics - Anfänger-Themen 5
V Wie auf Elemente des Frames zugreifen Java Basics - Anfänger-Themen 4
A frames layout Java Basics - Anfänger-Themen 4
Z frames Java Basics - Anfänger-Themen 3
G Frames unabhänig schliessen. Java Basics - Anfänger-Themen 2
G Ist es möglich, den 'Rahmen' eines Frames durch Grafiken. Java Basics - Anfänger-Themen 5
G Liste in mehreren unabhängigen Frames aktualisieren. Java Basics - Anfänger-Themen 6
V Aufruf eines Frames Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben