ActionEvent zur Steuerung von Text- und Bildauswahl

lokilay

Mitglied
Hallo Zusammen,
die Situation ist folgende: Innerhalb eines JFrames (f1) soll ein "Zurück-Button" ein vorherig angezeigtes Bild und gleichzeitig den vorherig dargestellten Text anzeigen. Dazu gibt es ein ImageIcon-Array und ein String-Array. Die Steuerung der Bilder klappt, Probleme gibt es wenn ich gleiches if-else (Zeile 72-78) für das String-Array hinzufüge. Wo liegt mein Fehler und wie könnte man ihn verbessern?

Java:
       public static void Anwendungsfenster()
	{
		 
		
		 //Bilder
		final ImageIcon[] iconarray = {
		     	new ImageIcon( "img/Folie1.png" ),
		     	new ImageIcon( "img/Folie2.png" ),
		     	new ImageIcon( "img/Folie3.png" ),
		     	new ImageIcon( "img/Folie4.png" ),
		     	new ImageIcon( "img/Folie5.png" ),
		     	new ImageIcon( "img/Folie6.png" ),
		     	
		     	};
	     final JLabel l  = new JLabel( iconarray[current] );
	     final JLabel zwei  = new JLabel( iconarray[current] );
	     
	    
		 final JFrame f1 =   new JFrame( "Fenster1");
		 final JFrame f2 =   new JFrame( "Fenster2" );
		 f1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		 f2.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		 f1.setSize  ( 1024, 800 );
		 f2.setSize  ( 1024, 800 );
		 f1.setLayout( new FlowLayout() );
		 f1.setLayout( new FlowLayout() );
		 f1.setVisible( true );
		 f2.setVisible( true );
	 	 f1.add( l );
	 	 f2.add( zwei );
	 	 
	 
	 	//TextdateiInhalt zu Stringarray
	 	final File[] file = {
	 			new File("hinweis1.txt"),
	 			new File("hinweis2.txt"),
	 			new File("hinweis3.txt"),
	 			new File("hinweis4.txt"),
	 			new File("hinweis5.txt"),
	 			new File("hinweis6.txt"),
	 	};
	 	String hinweis;
	 	final String hinweisarray[] =  new String[156];
 		for (int i=0;i<file.length;i++)
 			
 			try {
 			    BufferedReader in = new BufferedReader(new FileReader(file[i]));
 			    while ((hinweis = in.readLine()) != null) {
 			    	hinweisarray[i] = hinweis;
 			    	
 			    }
 			    in.close();
 			} catch (IOException e) {
 			}
		
	 	 //Zurück-Button
 		 final JLabel hinweislabel  = new JLabel( hinweisarray[current] );
 		 final int i = 0;
	 	 final JButton buttonPrev = new JButton( "<<" );
	 	 f1.add( buttonPrev );
	 	 ActionListener al = new ActionListener()
	 	 {
	 		 @Override public void actionPerformed( ActionEvent e){
	 			if(current == 0){
	                current = iconarray.length - 1;
	            }else{
	                current--;
	            }
	            l.setIcon(iconarray[current]);
	 			zwei.setIcon( iconarray[current] );
	 			// Hier versuche ich- ebenso wie im iconarray - das vorangegangene element im hinweisarray anzusprechen
	 			if(current == 0){
	                current = hinweisarray.length - 1;
	            }else{
	                current--;
	            }
	 			hinweislabel.setText(hinweisarray[current]);
	 		}
	 		 
	 	 };
	 	 buttonPrev.addActionListener( al );
	 	f1.add( drei );
 

Michael...

Top Contributor
current gilt doch für Text und Bild in Deiner Action Methode überprüfst und reduzierst Du zwei mal diese Variable. Das zweite mal ist überflüssig - nein, sogar falsch.
 
S

SlaterB

Gast
was passiert denn ganz konkret in einem Durchlauf, der etwa mit current 0 beginnt?
das erste if-else setzt current auf den letzten Index, z.B. 70, und holt das zugehörige Icon,

danach wird current auf 69 verringert, und das falsche Label geholt,
current ist doch schon fertig berechnet, wieso machst du dazu noch irgendwas?
 

lokilay

Mitglied
Ich möchte nicht nur die durch current berechnete Position des icon-arrays darstellen, sondern auch die current Position des hinweisarrays.
 
S

SlaterB

Gast
wenn beide Arrays gleich lang sind und alle Indexe zusammengehören, dann reicht eine current-Variable,
die du eben nur einmal verringern musst und fertig, der richtige Index für beide Arrays,
nicht zweimal verringern,

ansonsten kannst du zwei Indexe verwenden, aber immer noch nicht ein und dasselbe current zweimal verringern,
aber das wird sicher nicht der Fall sein

falls alles nicht stimmt, obwohl es schon vor einer Woche sonnenklar aussah,
musst du mal in mehr als einem Satz beschreiben, was 'current Position des hinweisarrays' usw. ist,
Beispiele helfen immer, ich habe eins gegeben mit 70, 69 usw., welches genau das Problem aufzeigt wie ich es verstehe,

wenn du das nachvollzogen hast, es dir aber um etwas anderes geht, dann versuche das zu kommunizieren..
 
Zuletzt bearbeitet von einem Moderator:

lokilay

Mitglied
Genau, Du hast das richtig verstanden. Ich möchte den gleichen Index von zwei unterschiedlich langen Arrays abrufen. Dabei wird wie Du beschrieben hast die current-Varibale runtergezählt und der Index mit ihrem Wert aufgerufen. Das funktioniert jedoch nicht beim String-Array (hinweisarray).

Ich habe mal testweise das iconarray gegen das hinweisarray (String-Array) ausgetauscht:

Java:
 final JTextArea drei  = new JTextArea(hinweisarray[current]);
	 	 f1.add( drei );
	 	 
	 	 ActionListener al = new ActionListener()
	 	 {
	 		 @Override public void actionPerformed( ActionEvent e){
	 		
	 			if(current == 0){
	                current = hinweisarray.length - 1;
	            }else{
	                current--;
	            }
	            drei.setText(hinweisarray[current]);
	 	
	 		 }

Zurückgegeben wird dann das erste Element (Hinweis1), der nächste ActionEvent liefert dann ein leeres Textfeld. Das Problem ist, dass hinweisarray[current] nicht das nächste heruntergezählte Element des Arrays liefert. Woran liegt das? Statt dem label habe ich jetzt TextArea verwendet
 
S

SlaterB

Gast
bisher hattest du beide Arrays in einem Listener,
nun zeigst du nur noch eine Hälfe, gibt es für die andere auch einen Listener mit derselben current-Variable?,
wird dort current verringert, wann wird dieser Button geklickt?,
muss nicht, wie es vorher verständlich war, gleichzeitig das Icon und der Text aktualisiert werden?

für mich ist nun mit einem Schlag alles unklar, was im Programm passieren soll, wie du es umgesetzt hast, was current alles macht usw.

als Tipp habe ich dann nur noch den in Hut, den ich eigentlich auch sowieso überall schreibe ;) :
loggen loggen loggen,
gib in jedem Listener mit System.out.println() aus, welcher Button gerade geklickt wurde, welchen Wert current vorher hatte,
auf was current evtl. geändert wird, was du aus welchem Array als Wert herausholst und wohin schreibst und was sonst noch spannend ist,
dazu musst du natürlich wissen, was du parallel in der GUI klickst und was passieren soll

vergleiche also den Wunsch "ich klicke jetzt next-Button und will dass statt Hinweis 45 'Vorsicht Glas' Hinweis 46 'Vorsicht Stein' angezeigt wird"
mit Programmlog
- Listener zu Button next wird aktiv
- alter current war: 45
- ändere current auf: 46
usw.

wenn irgendwas faul läuft, ist das im Log hoffentlich zu erkennen,
z.B. dass current schon vor/ zu Beginn des Buttonklicks falsch war,
etwa weil ein anderer Button auch mit current arbeitet usw.
 
Zuletzt bearbeitet von einem Moderator:

Michael...

Top Contributor

lokilay

Mitglied
Entschuldigt bitte die Verwirrung, der letzte Post enthielt Test Code um zu überprüfen ob das Durchklicken nur durch die Texte möglich ist (später habe ich dann die Bilder hinzugenommen).

Da die arrays unterschiedlich lang sind habe ich eine zweite Variable current angelegt. Jetzt funktioniert es:

Java:
 ActionListener al = new ActionListener()
	 	 {
	 		 @Override public void actionPerformed( ActionEvent e){
	 			if(current == 0){
	                current = iconarray.length - 1;
	            }else{
	                current--;
	            }
	            l.setIcon(iconarray[current]);
	 			zwei.setIcon( iconarray[current] );
	 			
	 			if(current2 == 0){
	                current2 = hinweisarray.length - 1;
	            }else{
	                current2--;
	            }
	 			//System.out.print(hinweisarray.length);
	 			//System.out.println( "text: " + hinweisarray[current2] + " index: " + current2);
	 			drei.setText(hinweisarray[current2] +" test");
	 			
	 		 } 
	 		 
	 		 
	 	 };

Habt vielen Dank für eure Geduld und Hilfe :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
sensus ActionEvent Java Basics - Anfänger-Themen 4
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
P Probleme bei ActionEvent Java Basics - Anfänger-Themen 8
M Int wert in ActionEvent senden Java Basics - Anfänger-Themen 4
C ActionEvent mit CheckBox (true und false) Java Basics - Anfänger-Themen 6
Z Kann actionPerformed(ActionEvent) nicht überschreiben Java Basics - Anfänger-Themen 8
A Difference between MouseEvent and ActionEvent Java Basics - Anfänger-Themen 5
S actionPerformed(ActionEvent ev) Java Basics - Anfänger-Themen 4
W setModel feuert ActionEvent bei JComboBox Java Basics - Anfänger-Themen 2
G ActionEvent in der Klammer? Java Basics - Anfänger-Themen 6
S Andere Klasse mit ActionEvent aufrufen, aber wie? Java Basics - Anfänger-Themen 15
M Help! ActionEvent bei Button Klick Java Basics - Anfänger-Themen 9
D ActionEvent simulieren ? Java Basics - Anfänger-Themen 7
M Übergeben einer Variable an actionPerformed(ActionEvent e)? Java Basics - Anfänger-Themen 5
C ActionEvent.Taschenrechner und seine Probleme Java Basics - Anfänger-Themen 4
P ActionEvent von Klasse A nach Klasse B feuern Java Basics - Anfänger-Themen 2
N CheckboxMenuItem löst kein ActionEvent aus Java Basics - Anfänger-Themen 4
C ActionEvent bei JButtons Java Basics - Anfänger-Themen 2
H Konstruktur per ActionEvent an eine andere Methode übergeben Java Basics - Anfänger-Themen 8
elischa Client-Server IO und Stream Steuerung ? Java Basics - Anfänger-Themen 2
M Compiler-Fehler X Y Steuerung eines Ovals Fehler Java Basics - Anfänger-Themen 6
T Variable an Steuerung versenden Java Basics - Anfänger-Themen 5
J roboter steuerung Java Basics - Anfänger-Themen 13
M Steuerung eines Autos Java Basics - Anfänger-Themen 3
M GUI-Steuerung Java Basics - Anfänger-Themen 2
M OS unabhängige Visualisierung einer Steuerung Java Basics - Anfänger-Themen 12
T GUI und Steuerung trennen ? Java Basics - Anfänger-Themen 13
L OOorg (An-)Steuerung durch Java Applikation Java Basics - Anfänger-Themen 4
A Steuerung der Bilder beim Anzeigen Java Basics - Anfänger-Themen 6
T PC-Steuerung Java Basics - Anfänger-Themen 7
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
A Edit Text Negative Decimalzahlen Java Basics - Anfänger-Themen 18
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
R Text in der DB abspeichern, und danach bearbeiten Java Basics - Anfänger-Themen 5
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
JavaBeginner22 Button Text verändern Java Basics - Anfänger-Themen 1
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
A Text zu Morsecode Java Basics - Anfänger-Themen 8
O Java Text Area Zeilenausgabe Java Basics - Anfänger-Themen 7
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
A Werten aus dem Text ausliesten Java Basics - Anfänger-Themen 6
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
C Variablen Provided text for message may not be null Java Basics - Anfänger-Themen 9
H Klassen Die Länge einer Text-Node bestimmen Java Basics - Anfänger-Themen 2
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
J Java TextArea Text bei hinzufügen makieren Java Basics - Anfänger-Themen 1
T Text-Ausgabe für Textadventure - Organisation Java Basics - Anfänger-Themen 5
G Anklickbaren Text erzeugen Java Basics - Anfänger-Themen 2
B Text-Datei nur in Stream speichern und dann ausgeben Java Basics - Anfänger-Themen 3
M Java: BufferedReader liest nur die Hälfte der Text-Datei. Java Basics - Anfänger-Themen 4
M Apache POI PPT - Vertikales Alignment von Text im XSLFAutoShape Java Basics - Anfänger-Themen 2
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
P Taschenrechner Text übertragung Java Basics - Anfänger-Themen 3
J java.text.DecimalFormat Java Basics - Anfänger-Themen 5
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
S Text-To-Speech mit Java Java Basics - Anfänger-Themen 2
L Text-Adventure Java Basics - Anfänger-Themen 3
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
ruutaiokwu Ausgegebene Zeile ersetzen mit neuem Text Java Basics - Anfänger-Themen 3
tsom Erste Schritte itext Text als Block auf neue Seite Java Basics - Anfänger-Themen 0
Dimax Programme ,als Text in MySql speichern Java Basics - Anfänger-Themen 7
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
Harlequin Compiler-Fehler Text Adventure - "Long Output" Fehler Java Basics - Anfänger-Themen 3
S Zeichen zählen kopierter Text Java Basics - Anfänger-Themen 6
D Text als Code in java-forum.com formatieren. Wie ? Java Basics - Anfänger-Themen 3
F Schreibprogramm nur markierten Text in kursiv oder fett schreiben Java Basics - Anfänger-Themen 3
A Rechnen mit Text und Zahl Java Basics - Anfänger-Themen 4
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
M Erste Schritte Verschlüsselung von text Java Basics - Anfänger-Themen 21
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
S Java Text splitten mit Tabs, Zeilen, Zeichen und Klammern. Java Basics - Anfänger-Themen 6
M Beliebigen Text in *** umwandeln Java Basics - Anfänger-Themen 15
K (JTable) Text einer Zelle auf der linken Seite kürzel Java Basics - Anfänger-Themen 2
H Suche in Text und Markierung Java Basics - Anfänger-Themen 14
H Suche in einem Text Java Basics - Anfänger-Themen 17
F Input/Output Text einlesen lassen Java Basics - Anfänger-Themen 14
L Text eingeben und im Textfeld auslesen lassen Java Basics - Anfänger-Themen 2
R Best Practice Palindrom in einem Text finden Java Basics - Anfänger-Themen 18
J Text Datei einlesen Java Basics - Anfänger-Themen 6
L Text und Ganzzahl in einer Dialogbox Java Basics - Anfänger-Themen 5
D Text Adventure Erstellen Java Basics - Anfänger-Themen 10
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
J JTextArea visible ohne Text Java Basics - Anfänger-Themen 3
D Bild zu Text Java Basics - Anfänger-Themen 4
L Text/Befehle zu Programmen senden Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben