Warum wird das Bild nicht angezeigt?

Status
Nicht offen für weitere Antworten.

Fjoergyn

Mitglied
Das Teil soll ein ausgewähltes Bild anzeigen. Nachdem ich die Datei ausgewählt habe passiert nix weiter. Wo ist mein Fehler?

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;
 
public class AppletASP extends JApplet implements ActionListener
{
	JButton button1 = new JButton();
	boolean successful=true;
	JOptionPane jop = new JOptionPane();
	private File picture;
	String pfad;
 
	public void init()
	{
		button1.setLabel("lala");
		this.getContentPane().add(button1, BorderLayout.NORTH);
		button1.setBounds(120,200,98,30);
		button1.addActionListener(this);
 
	}
	public void paintImage( Graphics g ) {

	Image image = Toolkit.getDefaultToolkit().getImage( pfad );
	g.drawImage(image,0,0,this);	

	}

	public void actionPerformed(ActionEvent ae)
	{
		if(ae.getSource().equals(button1))
		{

					JFileChooser fileDialog = new JFileChooser();
					int xx = fileDialog.showSaveDialog(this);
					fileDialog.show();
					switch(xx) {
       					  case JFileChooser.APPROVE_OPTION:
          					picture = fileDialog.getSelectedFile();
						//ImageIcon icon = new ImageIcon(picture.getAbsolutePath());
						pfad = picture.getAbsolutePath();
						

						

                 			}
 
		}

	
	}


	

	
}
 

L-ectron-X

Gesperrter Benutzer
Applets benutzen im Gegensatz zu Applikationen nicht das Toolkit um Bilder zu laden. Die Klasse Applet hat eine eigene getImage()-Methode, die verwendet werden muss.
Und das Bild solltest du dann in der paint()-Methode zeichnen. Also brauchst du dazu nur deine paintImage()-Methode umbenennen. Um das Bild zu laden ist dann aber die paint()-Methode ein denkbar ungünstiger Ort. Sowas ist gut in der init()-, start()-, oder einer Event-Methode untergebracht.
 

Fjoergyn

Mitglied
OK...nur will getImage unbedingt ne URL ... wie schaff ich es das es auch einen Pfad schluckt? Ich will in meinem Applet ja ein lokales Bild anzeigen lassen ... nur Blick ich da einfach nicht durch: getImage im Toolkit nimmt einen String an, geht aber nicht bei Applets ... getImage aus AppletContext nimmt nur URLs an ... er muss doch ne Möglichkeit geben lokale Bilder in nem Applet anzuzeigen .. deswegen signiere ichs ja auch: Damit es eben lokalen Zugriff hat! Wenn das Bild auf nem Server wäre, dann wärs ein Kinderspiel, aber so ... :bahnhof:

*Verzweifel*

Ach ja und noch was: Wird die paint()-Methode automatisch aufgerunfen? Denn in allen Beispielen die ich bisher gesehn hab wird sie nicht explizit aufgerufen. Aber wie stelle ich sicher das sie erst aufgerufen wird wenn ich ein Bild ausgewählt habe?
 

L-ectron-X

Gesperrter Benutzer
Fjoergyn hat gesagt.:
getImage aus AppletContext nimmt nur URLs an
Code:
private Image image;
...

File file = chooser.getSelectedFile();
try {
   image = getImage(file.toURL());
}
catch(MalformedURLException e) {
   System.out.println("Fehlerhafter URL:\n"+e.getMessage());
}
Probiere es mal so.

Fjoergyn hat gesagt.:
Ach ja und noch was: Wird die paint()-Methode automatisch aufgerunfen?
...
Aber wie stelle ich sicher das sie erst aufgerufen wird wenn ich ein Bild ausgewählt habe?
Ja, die paint()-Methode wird von der VM aufgerufen, den Zeitpunkt kannst du mit repaint() beeinflussen.
Wenn du also ein Bild geladen hast, rufst du repaint() auf.

Und meine Aussage oben ist noch etwas zu allgemein. Du schreibst ein JApplet, dort muss nicht die paint()-Methode sondern die paintComponent()-Methode überschrieben werden.
Die Anweisungen bleiben aber ansonsten gleich.
Und: die erste Anweisung in der paintComponent()-Methode sollte immer
Code:
public void paintComponent(Graphics g) {
   super.paintComponent(g);
...
}
sein.
 

Fjoergyn

Mitglied
Super das du um die Zeit noch antwortest :) dickes danke

Edit:
Der Code schaut nun so aus:


Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;
import java.lang.*;
import java.net.*;

 
public class AppletASP extends JApplet implements ActionListener
{
	JButton button1 = new JButton();
	boolean successful=true;
	JOptionPane jop = new JOptionPane();
	private File picture;
	String pfad;
	private Image image;

 
	public void init()
	{
		button1.setLabel("Datei");
		this.getContentPane().add(button1, BorderLayout.NORTH);
		button1.setBounds(120,200,98,30);
		button1.addActionListener(this);
 
	}

	public void paintComponent( Graphics g ) {
		super.paintComponent(g);
		g.drawImage(image,0,0,this);	

	}

	public void actionPerformed(ActionEvent ae)
	{
		if(ae.getSource().equals(button1))
		{

					JFileChooser fileDialog = new JFileChooser();
					int xx = fileDialog.showSaveDialog(this);
					fileDialog.show();
					switch(xx) {
       					  case JFileChooser.APPROVE_OPTION:
          					picture = fileDialog.getSelectedFile();
						//pfad = picture.getAbsolutePath();						
						try {
   							image = getImage(picture.toURL());
						}
						catch(MalformedURLException e) {
   							System.out.println("Fehlerhafter URL:\n"+e.getMessage());
						}
						repaint();
                 			}
		}
	}

}


Nun krieg ich folgenden Error:

AppletASP.java:30 Cannot find symbol
symbol : method paintComponent(java.awt.Graphics)
location: class javax.swing.JApplet
..............super.paintComponent(g);
.................... ^


Hatte noch n anderen Error den ich aber mit google lösen konnte, aber an dem beiß ich mir echt grad die Zähne aus ... an fehlenden importen kann es nicht liegen ...
Ich hab die Zeile mal auskommentiert und das Applet getestet, und es geschah nix ... liegt das nun an der fehlenden Zeile oder ist da was anders faul?
In den APPROVE_OPTION sprinmgt er doch rein, oder?
 

L-ectron-X

Gesperrter Benutzer
Ups, sorry. War mein Fehler. War wohl doch schon etwas spät (früh) heute...

JApplet ist keine JComponent, sondern erbt direkt von Applet. Und Applet kennt nun mal keine paintComponent()-Methode.
paint(Graphics g) war schon richtig!

Aber ich sehe schon das nächste Problem auf dich zu kommen...
Beim Start des Applet dürfte eine NullPointerException geworfen werden, weil die VM bereits die paint()-Methode aufruft, die ja das Bild zeichnen soll. Aber es existiert zu diesem Zeitpunkt noch gar kein Image-Objekt, das gezeichnet werden könnte. Hier musst du also noch auf null prüfen.

Und weil wir schon dabei sind, wirds dann auch schon das nächste Problem geben...
Die paint()-Methode zeichnet die gesamte Appletfläche neu. Das heißt, dein angezeigtes Bild wird alle GUI-Komponenten überzeichnen. Du kannst also u.U. den Button zum Öffnen des JFileChoosers nicht mehr sehen.
Abhilfe schafft hier entweder die Implementierung eines eigenen JPanels, von dem du die paintComponent()-Methode entsprechend überschreibst, oder der Einsatz eines JLabels auf dem du das Bild mit
Code:
label.setIcon(new ImageIcon(image));
zeichnen lässt.
Das JLabel bzw. dein eigenes JPanel fügst du dann dem CENTER-Bereich (BorderLayout) deines Applets hinzu.

Möglicherweise sind aber die Bilder größer als der nutzbare Anzeigebereich. Abhilfe könnte der Einsatz einer JScrollPane bringen, oder die Skalierung des Bildes auf die passende Größe.
 

Fjoergyn

Mitglied
THX ... endlich geschafft. Habs mit einem JLabel gemacht. Wenn ich jetzt allerdings n zweiten Button hinzufüge, reagiert der ActionListener nicht mehr auf den ersten obwohl alles gleich bleibt ???:L

Falls dus dir ma angucken willst:
http://weltenreich.awardspace.com/

Endlich fertig :D :D :toll: :applaus:
 

L-ectron-X

Gesperrter Benutzer
Zum Beispiel...

...nicht benötigte Objekte und Variablen aus dem Quelltext entfernen,

außerdem Referenzvergleich
Code:
if(ae.getSource().equals(button1)) //nicht so
if(ae.getSource() == button1) //sondern so

und den JFileChooser bereits in der init()-Methode erzeugen. So steht er nach Button-Klick sofort zur Verfügung, es wird nicht jedesmal ein neues Objekt erzeugt und es steht immer das Verzeichnis der letzten Auswahl zur Verfügung.

Die setBounds()-Methoden bewirken in einem BorderLayout absolut nichts. (Raus damit!)

Instanzvariablen privat deklarieren!

Das Paket java.lang wird standardmäßig vom Compiler importiert, das brauchst du nicht machen.
Das Paket javax.imageio brauchst du hier nicht. (Raus damit!)

Die Anweisung
Code:
fileDialog.show();
ist überflüssig. (Raus damit!)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Bild wird in Applet nicht angezeigt! Tools - Maven, Gradle, Ant & mehr 6
U Live-Bild wird im Browser nicht aktualisiert Tools - Maven, Gradle, Ant & mehr 21
S Problem: Bild im Applet wird 3-4 Mal geladen Tools - Maven, Gradle, Ant & mehr 5
von Spotz Gradle: Warum wird das Plugin nicht geladen? Tools - Maven, Gradle, Ant & mehr 4
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
pkm Beim Deployen wird ein Package nicht gefunden, obwohl aus Buildpath. Tools - Maven, Gradle, Ant & mehr 0
S Applet Java Testen - Ergebnis wird nicht angezeigt, nur leeres Feld Tools - Maven, Gradle, Ant & mehr 15
S Java Web Start wird nicht ausgeführt Tools - Maven, Gradle, Ant & mehr 1
H Applet Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 2
D [MAVEN] Artifact wird nicht vom Repository(manager) geladen Tools - Maven, Gradle, Ant & mehr 5
G Maven JAR-File schmeißt NoClassDefFoundError wenn /lib Verzeichnis nicht daneben entpackt wird Tools - Maven, Gradle, Ant & mehr 9
F Applet verwischt, wenn Seite gescrollt wird Tools - Maven, Gradle, Ant & mehr 16
M EJB wird nicht richtig deployed Tools - Maven, Gradle, Ant & mehr 2
M Java3D Applet flackert wenn ein Button(HTML) gedrückt wird Tools - Maven, Gradle, Ant & mehr 11
P Ant build.xml, danach wird ein srcpackage vergessen Tools - Maven, Gradle, Ant & mehr 4
G Applet Destroy methode wird nicht aufgerufen :( Tools - Maven, Gradle, Ant & mehr 4
R JFrame wird nicht angezeigt. Tools - Maven, Gradle, Ant & mehr 3
U Hauptklasse wird nicht gefunden. Tools - Maven, Gradle, Ant & mehr 9
G Thread für bewegte Zeichnung wird nicht gestartet Tools - Maven, Gradle, Ant & mehr 3
L Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 15
N applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 6
B Java Fehler, weiß aber nicht wie er behoben wird. :'( Tools - Maven, Gradle, Ant & mehr 10
G Aus Java Anwendung wird Applet Tools - Maven, Gradle, Ant & mehr 3
M NORTH-Button wird im Firefox nicht dargestellt, im IE schon Tools - Maven, Gradle, Ant & mehr 4
C jar Fehler? Text wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 11
J Warum wird das Applet nicht angezeigt? Tools - Maven, Gradle, Ant & mehr 7
K Applet wird nicht geladen Tools - Maven, Gradle, Ant & mehr 19
T Eigenes Applet wird nicht angezeigt, aus dem Web gehts Tools - Maven, Gradle, Ant & mehr 4
C Frame wird nicht geöffnet (Applet) Tools - Maven, Gradle, Ant & mehr 11
J Applet wird geladen aber nicht angezeigt Tools - Maven, Gradle, Ant & mehr 2
D Applet wird nicht geladen. Tools - Maven, Gradle, Ant & mehr 5
M Aktion wenn die Maustaste losgelassen wird Tools - Maven, Gradle, Ant & mehr 4
S Applet verwischt, wenn Seite gescrollt wird Tools - Maven, Gradle, Ant & mehr 3
P Probleme mit IE und sp2 - Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 11
J Applet wird eingebunden aber nicht aktiviert Tools - Maven, Gradle, Ant & mehr 6
S Java-Applet wird nicht erneuert Tools - Maven, Gradle, Ant & mehr 2
M Applet wird mal erkannt und mal nicht Tools - Maven, Gradle, Ant & mehr 9
H Applet drawImage gibt falsches bild aus Tools - Maven, Gradle, Ant & mehr 6
N Bild schieben via Drag 'n Drop ist zu schnell! Tools - Maven, Gradle, Ant & mehr 6
C Mein Applet zeigt mein Bild im Internet nicht an Tools - Maven, Gradle, Ant & mehr 2
H Borderlayout und Bild in Applet einfügen Tools - Maven, Gradle, Ant & mehr 4
F Bild speichern Tools - Maven, Gradle, Ant & mehr 4
K Applet mit mehreren Paketen und Bild/Ton-Ordnern in Browser Tools - Maven, Gradle, Ant & mehr 2
G bild öffnen mit BufferedImage Tools - Maven, Gradle, Ant & mehr 4
D Runnable JApplet mit Bild/Ovals "übermalt" Buttons Tools - Maven, Gradle, Ant & mehr 6
F Bild über Applet aussuchen und auf Serverladen Tools - Maven, Gradle, Ant & mehr 14
K Bild auf JButton in Applet, JButton wir aber net angezeigt? Tools - Maven, Gradle, Ant & mehr 7
S mouseEntered mit einem Bild im Applet Tools - Maven, Gradle, Ant & mehr 17
M Applet soll Bild übertragen Tools - Maven, Gradle, Ant & mehr 9
F Ein Bild in einem Applet anzeigen? Tools - Maven, Gradle, Ant & mehr 2
J Bild in Array einlesen Tools - Maven, Gradle, Ant & mehr 13
T Mit Applet Bild von einer anderen HP darstellen Tools - Maven, Gradle, Ant & mehr 28
S Access Denied beim Bild laden Tools - Maven, Gradle, Ant & mehr 7
G Bild in einem TextField oder TextArea? Tools - Maven, Gradle, Ant & mehr 3
K Java Lade - Bild ändern Tools - Maven, Gradle, Ant & mehr 9
D sich bewegendes bild + timer Tools - Maven, Gradle, Ant & mehr 6
B Bild Tools - Maven, Gradle, Ant & mehr 2
G Bild im Applet laden und ausgeben Tools - Maven, Gradle, Ant & mehr 2
K Bild (jpg) in einem JApplet Tools - Maven, Gradle, Ant & mehr 2
J Screenshot to Form / Clipboard Bild übertragen Tools - Maven, Gradle, Ant & mehr 2
Z java-puzzel lädt bild nicht Tools - Maven, Gradle, Ant & mehr 3
J Bild als Hintergrund Tools - Maven, Gradle, Ant & mehr 24
thor_norsk Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf IntelliJ IDE starten Tools - Maven, Gradle, Ant & mehr 8
S Gradle kann Lottie Implementation nicht finden Tools - Maven, Gradle, Ant & mehr 5
Gradle build funktioniert nicht Tools - Maven, Gradle, Ant & mehr 10
ExceptionOfExpectation Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf Eclipse starten Tools - Maven, Gradle, Ant & mehr 20
Ich kann Maven nicht als UmgebungsVariable hinzufügen Tools - Maven, Gradle, Ant & mehr 2
8u3631984 Hauptklasse konnte nicht gefunden oder geladen werden Tools - Maven, Gradle, Ant & mehr 9
Moman2022 Hauptklasse kann nicht gefunden werden gradle build Tools - Maven, Gradle, Ant & mehr 3
Encera JavaFX und Maven funktioniert nicht Tools - Maven, Gradle, Ant & mehr 1
W gradlew funktioniert nicht Tools - Maven, Gradle, Ant & mehr 37
8u3631984 Gradle nicht benötigte Dependencies finden Tools - Maven, Gradle, Ant & mehr 3
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
N Regex in nicht-gierigen Regex umwandeln Tools - Maven, Gradle, Ant & mehr 0
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
H Maven Bekomme cobertura in jenkins nicht zu laufen :-( Tools - Maven, Gradle, Ant & mehr 1
T Tomcat Server zeigt Webservice nicht an Tools - Maven, Gradle, Ant & mehr 21
J netbeans - jasperreports - gradle - klappt nicht Tools - Maven, Gradle, Ant & mehr 0
C runnable jar nicht ausführbar Tools - Maven, Gradle, Ant & mehr 4
M Java mit Modulen kompilieren klappt nicht Tools - Maven, Gradle, Ant & mehr 9
L Ausführbare Jar-File funktioniert nicht Tools - Maven, Gradle, Ant & mehr 15
C while Schleife in Plugin stoppt nicht Tools - Maven, Gradle, Ant & mehr 23
X Javapackager kann common.io nicht finden Tools - Maven, Gradle, Ant & mehr 4
D Deployte Anwendung startet auf dem anderen PC nicht ! Tools - Maven, Gradle, Ant & mehr 1
S Hauptklasse kann nicht geladen werden Tools - Maven, Gradle, Ant & mehr 2
Tom299 Maven Maven funktioniert nach Installation nicht Tools - Maven, Gradle, Ant & mehr 1
D Ressource nach deployen nicht erreichbar Tools - Maven, Gradle, Ant & mehr 1
S Maven installieren - "Befehl wurde nicht gefunden" Tools - Maven, Gradle, Ant & mehr 1
C Tomcat GWT Beispielprojekt läuft nicht. Tools - Maven, Gradle, Ant & mehr 0
A Tomcat deployed nicht Tools - Maven, Gradle, Ant & mehr 6
C Tomcat nicht über 8080 erreichbar Tools - Maven, Gradle, Ant & mehr 3
G Maven, finde Dependency nicht... Tools - Maven, Gradle, Ant & mehr 2
M Maven Dependency lädt pom und nicht jar Tools - Maven, Gradle, Ant & mehr 0
V Appletviewer - Befehl nicht bekannt Tools - Maven, Gradle, Ant & mehr 1
D Ant JAR-Ressourcen in JNLP-Datei sind nicht von demselben Zertifikat signiert Tools - Maven, Gradle, Ant & mehr 2
T build job läuft nicht mit findBugs...WARUM? Tools - Maven, Gradle, Ant & mehr 1

Ähnliche Java Themen

Neue Themen


Oben