Swing Bilder werden nicht angezeigt

Alex2013

Bekanntes Mitglied
Hallo zusammen,

bevor ich genauer auf das Problem eingehe, die paintComponent ist in einer anderen Klasse ausgelagert wovon geerbt wird. Bei einem anderen Programm funktioniert diese Arbeitsweise mit der paintComponent. Allerdings ist diese jetzt ja wie gesagt ausgelagert.
Ich habe daher in der Unterklasse noch einmal ImageIcon integriert um das Bild, wie bei den anderen Programmen auch, laden zu können...
Ich habe jetzt einige Varianten durchprobiert, aber es wollen einfach keine Bilder angezeigt werden... :-(
Kann mir evtl. jemand sagen, in welcher Zeile ich den Befehl zum Laden des Bildes einpflegen muss?
Ich verwende folgende Befehle: ImageIcon img=new ImageIcon; Image bild=img.getImage();

Hier der Code Klasse1:
Java:
[code]
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

class Uebung9_2_erweitert extends JFrame
{
	private static final long serialVersionUID = 1L;
	private Image bild;
	int count;
	Uebung9_2_erweitert f2;
	
	public Uebung9_2_erweitert()
	{
		ImageIcon imageicon= new ImageIcon("Bewerbungsfoto.jpeg");
		bild=imageicon.getImage();
	}
	
	final private int random1()
	{
		return (int)(Math.random()*3);
	}
	
	final private int random()
	{
		return (int)(Math.random()*256);
	}
	
	public void paint(Graphics gr)
	{	
		count=0;//in ihr werden zwei schleifen aufgerufen, die erste fuehrt die x achse entlang
		gr.setColor(Color.WHITE);
		gr.fillRect(0, 0, 400, 300);
		for(int x=20;x<getSize().width-25;x=x+40)
		{	//die zweite fuehrt die y achse entlang
			for(int y=40;y<getSize().height-25;y=y+40)
			{	//die variable ran wird mit random1 initialisiert
				int ran=random1();
				if(ran==0)
				{
					gr.setColor(Color.RED);
				}
				else if(ran==1)
				{
					gr.setColor(Color.BLUE);
				}
				else if(ran==2)
				{
					gr.setColor(Color.GREEN);
				}
				//
				if(ran==3)
				{
					gr.drawImage(bild, x, y, 30, 30, this);
					count=count+1;
				}
				else
					gr.fillRect(x, y, 30, 30);
				int r=random(),g=random(),b=random();
				gr.setColor(new Color(r,g,b));
				gr.drawOval(x, y, 30, 30);
			
				count++;
			}
		}
	}
	public void start(int wahl)
	{
		double step=100*((wahl+1)/2.0+0.5);
		Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
		for(double i=0, j=0;i<(d.width-getSize().width);i=i+((d.width-getSize().width)/step),j=j+((d.height-30-getSize().height)/step))
		{
			try
			{
				Thread.sleep(10);
				setLocation((int)i,(int)j);
			}catch(InterruptedException ie){}
			
		}
		int num=f2.count;
		repaint();
		String eingabe=JOptionPane.showInputDialog("Wie viele Bilder waren im Feld?");
		int zahl=Integer.parseInt(eingabe);
		
		if(zahl!=num)
		{
			System.out.println("falsch, es waren: "+num);
		}
		else
			System.out.println("richtig, es waren: "+num);
		System.exit(0);
	}
}
[/code]

Und hier der Code der zweiten Klasse:
Java:
[code]
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
//F-Variante

class A11 extends JFrame 
{ 
	private static final long serialVersionUID = 1L;
	private Image bild;
	int number;

	public A11(){
		setSize(310,330);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		ImageIcon imageicon = new ImageIcon("logo.jpg");
		bild = imageicon.getImage();		
	}

	final private int random1(){
		return (int)(Math.random()*4);
	}

	final private int random(){
		return (int)(Math.random()*256);
	}

	public void paint(Graphics gr){
		number = 0;
		gr.setColor(Color.WHITE);
		gr.fillRect(0,0,310,330);     
		for(int x = 20; x < getSize().width - 25; x = x+40)
			for (int y = 40; y < getSize().height-25;y = y+40){
				int ran = random1();
				if (ran == 0)
				gr.setColor(Color.RED);
				else if (ran == 1)
					gr.setColor(Color.BLUE);
					else if (ran ==2)
						gr.setColor(Color.GREEN);	
				
				if (ran == 3){
  					gr.drawImage(bild,x,y,30,30,this);
					number = number +1;
				}
				else gr.fillRect(x,y,30,30);

				int r = random(), g = random(), b = random();
				gr.setColor(new Color(r,g,b));
				gr.drawOval(x,y,30,30);
			}
	}
	public void start(int wahl){
		//wahl hat die Werte 0,1, 2, ..., 8
		double step = 100*((wahl+1)/2.0 + 0.5);
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		for(double i=0, j=0;i<(d.width-getSize().width); i = i + ((d.width-getSize().width)/step), j = j + ((d.height-30-getSize().height)/step)){
			try{
				Thread.sleep(10);
			}catch (InterruptedException e){}
			setLocation((int)i,(int)j);
		}

		int num = number;
		repaint();

		String eingabe = JOptionPane.showInputDialog("Wieviele Bilder waren im Feld?");
		int zahl = Integer.parseInt(eingabe);
		if (zahl == num)
		JOptionPane.showMessageDialog(null, "Richtig!","Ergebnis",JOptionPane.INFORMATION_MESSAGE);
		else JOptionPane.showMessageDialog(null, "Falsch! Es waren "+ num + ".","Ergebnis",JOptionPane.WARNING_MESSAGE);		
		System.exit(0);
		
	}
}


public class Auswahl extends JFrame implements ActionListener
{
	private static final long serialVersionUID = 1L;
	private JComboBox<Double> zeitWahl = new JComboBox<Double>();
	private JButton startButton;
	private A11 spiel = new A11();
	private int druecken = 0; 
	private Image bild;
	public Auswahl()
	{		
		setzeKomponenten();
		pack();
		setLocation(0,350);
		setVisible(true);
	}

/*
//schlechte Variante
	public void actionPerformed(ActionEvent evt){ 		
		druecken++;
		spiel.setVisible(true);
		if (druecken == 2)
			spiel.start(zeitWahl.getSelectedIndex());
	}
*/

//F-Variante
	public void actionPerformed(ActionEvent evt)
	{ 
		Runnable bewegung = new Runnable(){
			public void run(){
				spiel.start(zeitWahl.getSelectedIndex());
			}
		};
		spiel.setVisible(true);
		SwingUtilities.invokeLater(bewegung);

	}



        public void setzeKomponenten()
        {
        	ImageIcon img=new ImageIcon("Bewerbungsfoto.jpeg");
    		bild=img.getImage();
		for(double i = 1; i <= 5; i = i + 0.5)
			zeitWahl.addItem(i);
		getContentPane().add(new JLabel(" Eingabe der Zeit in Sekunden: "), BorderLayout.NORTH);
		getContentPane().add(zeitWahl, BorderLayout.CENTER);
		startButton = new JButton("Start");   //F-Version
		//startButton = new JButton("Start mit Doppelklick");  //schlechte Variante
		getContentPane().add(startButton, BorderLayout.SOUTH);
		startButton.addActionListener(this);
	}


	public static void main(String[] args){
		new Auswahl();				
	}
}
[/code]

Ich weiß echt nicht, wo ich hier noch etwas ändern soll...
Bei Bedarf kann ich noch den Code eines anderen funktionierenden Programmes posten, der im Prinzip das Selbe bewirken soll... bis auf die Zeit Einstellungen.

Lg
 

rme

Top Contributor
Vermutung:

Java:
        return (int)(Math.random()*3);

Dieser Ausdruck kann die Werte 0, 1 und 2 annehmen, da Math.random() Werte im Intervall [0, 1) liefert, d.h. die 1 wird nie zurückgegeben. Da der Cast zu int abschneidet und nicht rundet, ist 2 der größte Werte und du zeichnest das Bild nur bei 3.
 

Alex2013

Bekanntes Mitglied
Mhm..., ich habe jetzt einmal etwas versucht, aber das hat nichts gebracht. Das war ein erster Lösungsversuch. Ich habe einfach den Multiplikator einmal herauf gesetzt, was aber nichts brachte.
Könntest du evtl. sagen, was genau du sonst meintest?
Evtl. habe ich gerade Tomaten auf den Augen und finde die Lösung nicht... :-(

Lg
 

Alex2013

Bekanntes Mitglied
So ich habe es jetzt noch einmal ausprobiert.
Es hat doch so geklappt wie du vermutet hattest.
Ich habe nur nicht gesehen, das ich in einer Zeile weiter oben noch einen anderen Bildpfad hinterlegt hatte. Diesen habe ich angepasst und jetzt funktioniert auch alles! :)

Danke für deinen Tipp :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
F Nicht alle Bilder werden angezeigt AWT, Swing, JavaFX & SWT 2
U Bilder in Jar werden nicht gefunden AWT, Swing, JavaFX & SWT 5
Cloud Einige Bilder werden nicht geladen AWT, Swing, JavaFX & SWT 11
S Wieso werden die Bilder nicht angezeigt? AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
A Java Print: Bilder werden zu groß ausgedruckt AWT, Swing, JavaFX & SWT 6
S Bilder werden sehr langsam geladen AWT, Swing, JavaFX & SWT 4
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
S AffineTranformation Bilder verschwinden von Anzeige bei Pan, Zoom AWT, Swing, JavaFX & SWT 6
G Bilder in javafx Project AWT, Swing, JavaFX & SWT 11
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Kirby.exe Bilder in GUI einfügen AWT, Swing, JavaFX & SWT 8
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
J Bilder proportional verkleiner AWT, Swing, JavaFX & SWT 12
E Bilder skalieren AWT, Swing, JavaFX & SWT 4
DaCrazyJavaExpert Swing Bilder überlagern AWT, Swing, JavaFX & SWT 19
A Bilder als Hintergrund AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Sugan Java FX Verzeichnisüberwachung -> Bilder auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
MrSnake Bilder aus Unterordner einfügen AWT, Swing, JavaFX & SWT 2
I 2D-Grafik Bilder Eingefügt, button jetzt im Hintergrund AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
thet1983 JTable Bilder AWT, Swing, JavaFX & SWT 6
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
F Bilder in jFrame einfügen AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
D 2D-Grafik Bilder anzeigen AWT, Swing, JavaFX & SWT 4
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
vodkaz JFrame,Bilder und Zeitverzögerung AWT, Swing, JavaFX & SWT 2
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
Xbody 2D-Grafik JavaFX Bilder transformieren AWT, Swing, JavaFX & SWT 2
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
P Durch Bilder Scrollen AWT, Swing, JavaFX & SWT 2
K Bilder übereinanderlegen AWT, Swing, JavaFX & SWT 11
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
Karuka 2D-Grafik Bilder in GridLayout einfügen AWT, Swing, JavaFX & SWT 7
J Bilder in ausführbare jar einbinden AWT, Swing, JavaFX & SWT 7
J Swing Bilder anzeigen in Gridlayout AWT, Swing, JavaFX & SWT 11
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
F Bilder ineinander kopieren AWT, Swing, JavaFX & SWT 3
P Bilder verkleinern AWT, Swing, JavaFX & SWT 2
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
L Bilder im JPanel als Hintergrund - Swing AWT, Swing, JavaFX & SWT 2
K Bilder nacheinander einfügen AWT, Swing, JavaFX & SWT 3
H Bilder auf Buttons per Klick tauschen ( Puzzle ) AWT, Swing, JavaFX & SWT 8
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
J Vergleicher zweier Bilder AWT, Swing, JavaFX & SWT 2
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
J Bilder überlappen AWT, Swing, JavaFX & SWT 18
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
M Mehrere Bilder auf einmal anzeigen AWT, Swing, JavaFX & SWT 9
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12
E Bilder auf JFrame AWT, Swing, JavaFX & SWT 7
R Bilder über URL einfügen AWT, Swing, JavaFX & SWT 4
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
G Swing Bilder zeichnen AWT, Swing, JavaFX & SWT 28
L Swing Bilder im Icons-Ordner AWT, Swing, JavaFX & SWT 4
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
A Bilder vergleichen AWT, Swing, JavaFX & SWT 4
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
E AWT Bilder und Java AWT, Swing, JavaFX & SWT 11
P Bilder einfügen AWT, Swing, JavaFX & SWT 4
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
S Swing Kleine Bilder in Panel einfügen AWT, Swing, JavaFX & SWT 13
A AWT Bilder als Link verwenden? AWT, Swing, JavaFX & SWT 11
T SWT Wie Bilder aus JAR-Dateien einbinden? AWT, Swing, JavaFX & SWT 12
S Bilder aus der Google Book Search API auslesen AWT, Swing, JavaFX & SWT 3
J Bilder in JScrollPane zentrieren AWT, Swing, JavaFX & SWT 5
M Bilder in einem Textfeld darstellen AWT, Swing, JavaFX & SWT 2
N Bilder aus Infos generieren lassen. Welches Framework? AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben