Abfrage nach einem Bild im Array

condoriano

Mitglied
Hey Leute also ich habe einen eine Icon Variable erstellt und dieses Icon wird in einem Array gespeichert.
So:
icon1 = new ImageIcon(getClass().getResource("NotenBilder/viertelKlein.png"));
bild[zaehler] = new JLabel(icon1);

Meine Frage ist nun wie kann ich mit einer if Abfrage Bilder miteinander vergleichen ?
Bsp: if ( bild[zaehler2] == viertelKlein.png)
{

}
 
Zuletzt bearbeitet:

condoriano

Mitglied
ich weis es nicht, deshalb frage ich. Ich habe es mit einem equals versucht, aber das ging auch nicht.
Ich möchte einfach wissen ob ein Bild in einem Array genau das selbe ist, nachdem ich suche.
 
Zuletzt bearbeitet:

condoriano

Mitglied
Anwendungsfall ? du meinst was das Programm können soll ?
Es geht darum MusikNoten aufzuschreiben und diese abzuspielen.
Die Noten werden vom Benutzer eingetragen und erscheinen im Programm (das funktioniert bereits). Nun sollen diese Noten die aufgelistet wurden abgespielt werden.
Deswegen muss ich abfragen welche Note sich an der z.B 1sten Stelle befindet um den dafür passenden Ton abzuspielen.


zb habe ich im Array an der Stelle 1 das Bild ganzeNote eingefügt, so soll ein ganzer Ton abgespielt werden.
 

X5-599

Top Contributor
Hi,

Eventuell würde es mit einer Map gehen. Du weist somit einem NotenBild eine Note zu. Dann kannst du diese bei deiner Auswertung mit Hilfe der gewählten Notenbilder wieder holen und abspielen.

Java:
//Vorbereitung
Map<JLabel, String> notenBildZuNote = new HashMap<JLabel, String>();

JLabel[] alleNoten = new JLabel[10];
for(int zaehler = 0; zaehler < alleNoten.length; zaehler++)
{
	JLabel notenBild = new JLabel(new ImageIcon(Start.class.getResource("/note"+zaehler+".png")));
	
	alleNoten[zaehler] = notenBild;
	notenBildZuNote.put(notenBild, "Note "+zaehler);
}

//Vom Benutzer gewählte Noten simulieren
Random r = new Random();
JLabel[] gewaehlteNoten = new JLabel[20];
for(int i = 0; i < gewaehlteNoten.length; i++)
{
	//Zufällige Auswahl aus allen Noten
	gewaehlteNoten[i] = alleNoten[r.nextInt(alleNoten.length)];
}


//Auswertung
for(int zaehler2 = 0; zaehler2 < gewaehlteNoten.length; zaehler2++)
{
	String note = notenBildZuNote.get(gewaehlteNoten[zaehler2]);
	System.out.println("Spiele: " + note);
}

Ich weiss natürlich nicht genau, ob das so in deine Verarbeitung passt...
 

arilou

Bekanntes Mitglied
Also, zunächst mal legst du in dem Array ja nicht "das Bild" ab, sondern JLabel-Objekte.
Aber um die Frage zu beantworten:
Ich würde von ImageIcon die .setDescription-Methode "zweckentfremden" und dort z.B. den Dateinamen hinterlegen. Dann kann man später

myIcon1.getDescription.equals( myIcon2.getDescription )

testen - aber natürlich mit den ImageIcon-Objekten, und nicht mit den JLabels; von denen müsste man sich das Bild erst wieder zurückholen via
Java:
ImageIcon myIcon1 ;
myIcon1 = (ImageIcon) (myLabel.getIcon()) ;
Das ganze könnte man natürlich in eine eigene Methode auslagern:
Java:
public static boolean isSameImage( JLabel lab1, JLabel lab2 )
{
  ImageIcon myIcon1, myIcon2 ;

  myIcon1 = (ImageIcon) (lab1.getIcon()) ;
  myIcon2 = (ImageIcon) (lab2.getIcon()) ;

  return ( myIcon1.getDescription.equals( myIcon2.getDescription ) );
}
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Da muss ich mich doch glatt fragen warum du nicht einfach eine Klasse "Note" anlegst, und eben dieser eine View zuordnest, welche dann das jeweilige image enthält / ihm zugeordnet wird, dann kannst du einfach die verschiedenen Noten miteinander vergleichen anstatt irgendwelche Bilder oder Beschreibungen zu vergleichen ;)

Eine Abstrakte Basisklasse und eine Subklasse für jede wäre ebenso denkbar.
 

arilou

Bekanntes Mitglied
War auch mein erster Gedanke, aber der TO möchte ja nur zum ImageIcon eine Zusatzinformation abspeichern und vergleichen können, und warum dann nicht einfach dessen 'description' verwenden.
Der Dateiname ist ja schließlich eine "Basis-Beschreibung" des Bilds...
 

kaoZ

Top Contributor
ist schon richtig , allerdings ist der Ansatz des TO halt nicht sonderlich OO, das mit der Wahl der Discription stelle ich nicht in frage ;)

Mal rein von der Idee her , was spricht gegen sowas @ TO

hier unfassbar rudimentär gehalten !

Java:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class Note{

//	define some constants for Note types
	
	BufferedImage image;
	
	public Note(int type){
//		richtiges image simulieren
		loadImage("H://note.jpg");
	}
	
	private void loadImage(String path){
		try {
			image = ImageIO.read(new FileInputStream((new File(path))));
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void draw(Graphics g){
		g.drawImage(image, 0,0, null);
	}
	
	@SuppressWarnings("serial")
	class NoteView extends JLabel{
		
		Note note;
		
		public NoteView(Note n){
			note = n;
		}
		
		@Override
		public void paintComponent(Graphics g){
			super.paintComponent(g);
			
			note.draw(g);
		}
	}
	
	public static void main(String[] args){
		Note one = new Note(0);
		
		JFrame f = new JFrame();
		f.setDefaultCloseOperation(2);
		f.setContentPane(one.new NoteView(one));
		f.setSize(200, 200);
		f.setLocationRelativeTo(null);
		f.setVisible(true);
	}
}

Die Fallunterscheidung welches Image wann geladen werden muss könnte man dann anhand des Notentyps festmachen und direkt schon den jeweiligen Pfad hinterlegen aus welchem das Image dann geladen werden würde.

Du übergibst quasi einfach eine Note an einen view , der View macht nichts anderes als eben das image der jeweiligen note zu zeichnen.

man könnte auch hergehen und nicht von JLabel ableiten sondern von ImageIcon, hatte ich jetzt nur auf die schnelle gemacht damit man es nachvollziehen kann.

so könntest du einfach, insofern du Swing nutzt dinge wie das hier schreiben :

Java:
.add(new NoteView(new Note(Note.GANZ)));

Was deinen Vergleich angeht :

könntest du einfach eine equals(Object o) methode implementieren ( in der Klasse Note ) in der du festlegen kannst wann zwei noten als gleich angesehen werden.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Input/Output Programm läuft nach input-Abfrage nicht weiter. Java Basics - Anfänger-Themen 2
D Variablen Rücksprung nach If Abfrage Java Basics - Anfänger-Themen 16
S Abfrage Objekt-Array nach Datentypen Java Basics - Anfänger-Themen 6
S TabbedPane: nach Abfrage oldTab selektieren Java Basics - Anfänger-Themen 5
M nach jar export keine db abfrage möglich Java Basics - Anfänger-Themen 2
Y Array initialisieren, nach der Abfrage? Java Basics - Anfänger-Themen 3
A nach if abfrage kommt fehler Java Basics - Anfänger-Themen 8
N Nach einer Abfrage bestehende Klasse öffnen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
L If Abfrage Java Basics - Anfänger-Themen 4
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
B Automatisierte Ausgabe (Schleife, If-Abfrage?) Java Basics - Anfänger-Themen 24
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
P Amazon SQS abfrage Java Basics - Anfänger-Themen 1
Marlena Bauer IBAN generieren (Deutschland) aus Abfrage von BLZ und Kontonummer? Java Basics - Anfänger-Themen 31
M Abfrage j/n und Bildschirm löschen Java Basics - Anfänger-Themen 3
S Und-Abfrage mit mehreren Ungleich-Operatoren Java Basics - Anfänger-Themen 17
O if Abfrage erkennt String nicht Java Basics - Anfänger-Themen 1
NeoLexx Abfrage mit instanceof führt zu unerwarteten Wert Java Basics - Anfänger-Themen 9
N Bedinugng If-Abfrage wird nie erfüllt Java Basics - Anfänger-Themen 4
L boolean-Abfrage enumeration Java Basics - Anfänger-Themen 3
Y Methoden Wie kann ich eine if-Abfrage bei Setters bauen? Java Basics - Anfänger-Themen 6
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
F If Abfrage gibt falsches Ergebnis.... Java Basics - Anfänger-Themen 6
F POST-Request mit json - Abfrage mit Java Java Basics - Anfänger-Themen 2
C Javafunktion zur Abfrage eines Quellcodes Java Basics - Anfänger-Themen 15
A JOPtionPaneOptionDialog Abfrage welcher Button gedrückt wurde? Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
G if Abfrage: Nicht jeder Fall berücksichtigt Java Basics - Anfänger-Themen 2
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
J Erste Schritte if Abfrage von JButton in 2. Klasse Java Basics - Anfänger-Themen 27
S If Abfrage nur mit bestimmter Initialisierung? Java Basics - Anfänger-Themen 8
Z Boolean Abfrage in einer for each Schleife Java Basics - Anfänger-Themen 2
deatzi Variable aus If Abfrage später nutzen Java Basics - Anfänger-Themen 4
C Instanz einer Klasse während if-Abfrage erzeugen und bei zweiter if-Abfrage wiederverwenden Java Basics - Anfänger-Themen 6
S Backspace Abfrage funktioniert nicht Java Basics - Anfänger-Themen 4
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
P Altklausur: Abfrage der Summe Java Basics - Anfänger-Themen 9
N Methoden Attribut Abfrage eines anderen Objektes Java Basics - Anfänger-Themen 36
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D SQL Abfrage anpassen Java Basics - Anfänger-Themen 17
H For-Schleife innerhalb If-Abfrage? Java Basics - Anfänger-Themen 3
F Abfrage ob Eingabe eine Zahl ist Java Basics - Anfänger-Themen 3
O Datentypen Volle 16 Bit eines Short für flags Abfrage nutzen Java Basics - Anfänger-Themen 11
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
M Variablen Eine etwas andere if Abfrage ! Java Basics - Anfänger-Themen 10
H if-Abfrage, ungleich und falscher true Wert? Java Basics - Anfänger-Themen 11
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
OlafHD Fehler Bei der if Abfrage Java Basics - Anfänger-Themen 5
quecksilver if-Abfrage in main ausführen Java Basics - Anfänger-Themen 4
D if-Abfrage Java Basics - Anfänger-Themen 12
J Abfrage für Programmwiederholung Java Basics - Anfänger-Themen 2
K Alternative zur If-Abfrage Java Basics - Anfänger-Themen 3
M Java als Webanwendung mit Datenbank abfrage Java Basics - Anfänger-Themen 3
D Abfrage ob Variableninhalt korrekt Java Basics - Anfänger-Themen 5
W Vergleich mit If-Abfrage nur für Zahlen bis 07 möglich - Warum? Java Basics - Anfänger-Themen 7
D Operatoren IF Abfrage liefert falsches Ergebnis Java Basics - Anfänger-Themen 4
X Ja nein abfrage? Java Basics - Anfänger-Themen 9
A Erste Schritte Problem bei meiner if-Abfrage! Java Basics - Anfänger-Themen 5
M Enum-Variabel-Abfrage funktioniert nicht? Java Basics - Anfänger-Themen 2
S Java Counter: nur 1 mal hochzählen auch wenn Abfrage mehrmals zutrifft. Java Basics - Anfänger-Themen 1
E Erste Schritte [Noob-Frage] Meine If-Abfrage macht nicht, was sie soll... Java Basics - Anfänger-Themen 2
A Key Event - Abfrage von 2 gedrückten Tasten Java Basics - Anfänger-Themen 6
T Klasse für Google-Abfrage Java Basics - Anfänger-Themen 9
Z If abfrage - Minimum 0 Java Basics - Anfänger-Themen 9
J Abfrage versetzen Java Basics - Anfänger-Themen 2
D Methoden Abfrage ob ein Wert bereits vorhanden ist Java Basics - Anfänger-Themen 1
thet1983 if() Abfrage Java Basics - Anfänger-Themen 2
A charAt(x)-Abfrage lässt bei Strings<x das Pgrogramm abstürzen. Kann man das verhindern? Java Basics - Anfänger-Themen 4
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
T Index-Abfrage von Pi Java Basics - Anfänger-Themen 5
H Erste Schritte If Abfrage Java Basics - Anfänger-Themen 3
B If Abfrage mit Passwort und Username Java Basics - Anfänger-Themen 2
U einlesen, abfrage Java Basics - Anfänger-Themen 25
T SQL Abfrage Läuft nicht Java Basics - Anfänger-Themen 5
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
F Erste Schritte IF-Abfrage fehlerhaft Java Basics - Anfänger-Themen 9
O Downloaden: Trotz If Abfrage wird Datei heruntergeladen Java Basics - Anfänger-Themen 2
D jProgressBar soll bei 100% sein wenn sql Abfrage inkl. jTable schreiben fertig ist... Java Basics - Anfänger-Themen 5
H if-Abfrage double wert Java Basics - Anfänger-Themen 5
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
B Boolean abfrage Java Basics - Anfänger-Themen 3
T If- Abfrage Java Basics - Anfänger-Themen 8
P Taschenrechner , IF-Abfrage Java Basics - Anfänger-Themen 12
D if-Abfrage Java Basics - Anfänger-Themen 6
G Einfache if-Abfrage der Main-Argumente Java Basics - Anfänger-Themen 3
C If abfrage zu getBackground Java Basics - Anfänger-Themen 2
T abfrage eines Integer Array s Java Basics - Anfänger-Themen 5
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
G Adminrechte abfrage Java Basics - Anfänger-Themen 5
R If-Abfrage, || funktioniert nicht Java Basics - Anfänger-Themen 4
B Abfrage mittels Variable vereinfachen Java Basics - Anfänger-Themen 6
C Treffer Abfrage Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben