Wert an andere Klasse übergeben

waeve

Mitglied
Hallo ihr,

ich bin mir sicher, dass es viel mehr zu diesem Thema zu lesen gibt, als ich bisher schon gelesen habe, und ich bin mir auch sicher, dass ich das eigentlich wissen sollte, aber ich tue es nicht. Also frage ich euch, in der Hoffnung, dass jemand so nett ist, es mir zu erklären ;-)

Habe 2 Klasse: Pan2 und ButtonToDo, ButtonToDo wird von Pan2 aufgerufen und erzeugt u.a. einen String mit dem Namen task. Dieser soll dem JButton in Pan2, der gedrückt wurde, übergeben werden.

Problem? Die Übergabe von task. Ich weiß einfach nicht wie. Ich rufe die Klasse und auch die Methode auf, aber in Pan2 kann ich den String nicht nutzen.

Java:
for (int i = 0; i < tasks.length; i++){
			tasks[i] = new JButton();
			tasks[i].setSize(50, 60);
			tasks[i].addActionListener( new ActionListener(){
				
				public void actionPerformed(ActionEvent ae) {
					
					for (int i = 0; i<tasks.length; i++){
						if(ae.getSource() == tasks[i]){
							todo.aufruf();							
						}
					}
				}
			});
			 
			this.add ( tasks[i]);			
		}

Java:
bestätigen.addActionListener(new ActionListener(){
			
			public void actionPerformed(ActionEvent e) {
				
				if (e.getSource() == bestätigen){
					
					task = name.getText();
					name.setText("");
					titel.setVisible(false);
					titel.dispose();					
					
				}
				
			}
		});

Ich hoffe das ist soweit verständlich :D

Schon mal vielen Dank für eure Zeit und Hilfe!
 
Zuletzt bearbeitet von einem Moderator:

waeve

Mitglied
Und was genau ist nicht verständlich?

ich will String task in die Klasse Pan2 übergeben und dort einem angeklicktem JButton als Titel übergeben.
 

stg

Top Contributor
Alles. Du klatscht da einfach vollkommen kontextlos ein paar Zeilen Code hin, mit denen kein Mensch was anfangen kann. Hinzu kommt, dass dein eigentliches Problem offenbar gar nichts mit dem geposteten Code zu tun hat.
 

waeve

Mitglied
Java:
public class Pan2  extends JPanel {	
	
	private static final long serialVersionUID = 1L;
	JPanel pan2;
	JButton[] tasks = new JButton[49];
	ButtonToDo todo = new ButtonToDo(); //Aufruf der Klasse 
	
	public void erzeuge (){
		
		this.setBackground(Color.blue.darker());
		this.setSize(900, 800);		
		this.setLayout(new GridLayout(8, 7));	
		
		for (int i = 0; i < tasks.length; i++){
			tasks[i] = new JButton();
			tasks[i].setSize(50, 60);
			tasks[i].addActionListener( new ActionListener(){
				
				public void actionPerformed(ActionEvent ae) {
					
					for (int i = 0; i<tasks.length; i++){
						if(ae.getSource() == tasks[i]){
							todo.aufruf();	//Aufruf der Methode in welcher der Stiring erzeugt wird. 
						
						}
					}
				}
			});
			 
			this.add ( tasks[i]);			
		}
				
		this.setVisible(true);
		
	}
}

Java:
public class ButtonToDo extends JDialog {
	
	
	private static final long serialVersionUID = 1L;
	
	JDialog titel = new JDialog();
	final JPanel pan3 = new JPanel();
	FlowLayout anordnung = new FlowLayout();
	JLabel todo = new JLabel("Welche Aufgabe möchtest du übernehmen?");
	JTextField name = new JTextField(15);	
	JButton bestätigen = new JButton("Bestätigen");
	String task = new String();
	
	
	public void aufruf(){
		titel.setTitle("Aufbaben Titel");
		titel.setSize(350, 200);
		
		pan3.setLayout(anordnung);
		anordnung.setAlignment(FlowLayout.CENTER);
		
		bestätigen.setSize(40, 40);
		bestätigen.addActionListener(new ActionListener(){
			
			public void actionPerformed(ActionEvent e) {
				
				if (e.getSource() == bestätigen){
					
					task = name.getText();
					name.setText("");
					titel.setVisible(false);
					titel.dispose();					
					
				}
				
			}
		});
		
		pan3.add(todo);
		pan3.add(name);
		pan3.add(bestätigen);
		
		titel.add(pan3);
		titel.setVisible(true);
		
	}
}

Jetzt verständlicher?
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
[ot]Benutze für deinen Java-Code doch bitte die
Java:
-Tags, danke! :)[/ot]

[quote="waeve, post: 1041050"]Und was genau ist nicht verständlich?[/QUOTE]

Du musst bedenken das du unsere Hilfe suchst, daher solltest du auch probieren dein Problem immer so ausführlich/genau wie möglich zu beschreiben :)
Auch musst du bedenken das wir deinen Text ohne Hintergrundinformationen lesen und uns daher alles andere was nicht erwähnt wir dazudenken müssen (raten usw.)

Zu deinem Problem:
Übergib der Klasse "ButtonToDo" eine Referenz deines Pan2 Objektes. Die Klasse Pan2 bietet eine Methode an welche einen String als Parameter erwartet.
Diese Methode rufst du dann einfach auf :)
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Zunächst mal sollte ButtonToDo nicht gleichzeitig von JDialog abgeleitet sein und eine Instanzvariable vom Typ JDialog besitzen. Entweder Komposition oder (schlechter) Vererbung, aber definitiv nicht beides gleichzeitig.
Zweitens würde ich genau andersrum wie Joose machen: die ButtonToDo-Klasse wird erweitert um eine public String getTask() Methode, die den Inhalt des "name" Textfelds enthält. Wenn der Dialog modal ist, wird die Programmausführung anhalten, wenn der Dialog eingeblendet wird. Der Benutzer trifft dann seine Auswahl, schliesst den Dialog, und der Task kann mit getTask() abgefragt und in Pan2 verwendet werden.
Eine Klassenname "ButtonToDo" für etwas das kein Button ist, ist übrigens grauslich.
 

waeve

Mitglied
Hallo,

erstmal vielen Dank für eure Antworten!!
Und was genau ist nicht verständlich?
war nicht böse gemeint, sonder so wie ichs geschrieben haben. Was muss ich klarer erklären. Ich weiß, dass es schwer ist das Problem exakt zu beschreiben, wenn man schon den ganzen Tag daran sitzt ;)

So ich habe nun herumprobiert und folgendes Entdeckt:
Wenn ich dem ersten button einen Titel gebe, und anschließend den 2. anklicke erhält dieser den Text des 1. Der 1. bleibt textlos. Genauso wie alle folgenden Button. Nur der 2. hat den falschen Text. und wenn ich diesen erneut anklicke wird er wieder leer.
ich habe mir an unterschiedlichen Stellen mal die Variablen auf der Konsole ausgeben lassen. Es wird immer ausgegeben, jedoch wird die 1. 2x ausgegeben und alle folgenden mit einigen Leerzeilen dazwischen.
Könnt ihr mir das erklären? Und mir sagen, was ich ändern muss, damit es funktioniert?

Hier noch mal der Code
Pan2
Java:
package start1;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Pan2  extends JPanel {	
	
	private static final long serialVersionUID = 1L;
	JPanel pan2;
	
	JLabel [] labwo = new JLabel[7];
	String[] wochentag = {"Montag", "Dienstag","Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sontag"}; 

	JButton[] tasks = new JButton[49];
	ButtonToDo todo = new ButtonToDo();
//	final String titel = new String();
	
	public void erzeuge (){
		
		this.setBackground(Color.blue.darker());
		this.setSize(900, 800);		
		this.setLayout(new GridLayout(8, 7));
		
		for(int w = 0; w<labwo.length; w++)
		{
			labwo[w] = new JLabel(wochentag[w], JLabel.CENTER);
			this.add(labwo[w]);			
		}	
		
		
		
		for (int i = 0; i < tasks.length; i++){
			tasks[i] = new JButton();
			tasks[i].setSize(50, 60);
			tasks[i].addActionListener( new ActionListener(){
				
				public void actionPerformed(ActionEvent ae) {
					
					for (int i = 0; i<tasks.length; i++){
						if(ae.getSource() == tasks[i]){
							todo.aufruf();
							final String titel = todo.getTask();
							System.out.println(titel);
							tasks[i].setText(titel);
							
							
						}
					}
				}
			});
			
			this.add ( tasks[i]);			
		}
				
		this.setVisible(true);
		
	}
}

ButtonToDo
Java:
package start1;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class ButtonToDo {
	
	JDialog titel = new JDialog();
	final JPanel pan3 = new JPanel();
	FlowLayout anordnung = new FlowLayout();
	JLabel todo = new JLabel("Welche Aufgabe möchtest du übernehmen?");
	JTextField name = new JTextField(15);	
	JButton bestätigen = new JButton("Bestätigen");
	String task = new String();	

	
	public void aufruf(){
		titel.setTitle("Aufbaben Titel");
		titel.setSize(350, 200);
		
		pan3.setLayout(anordnung);
		anordnung.setAlignment(FlowLayout.CENTER);
		
		bestätigen.setSize(40, 40);
		bestätigen.addActionListener(new ActionListener(){
			
			public void actionPerformed(ActionEvent e) {
				
				if (e.getSource() == bestätigen){					
					task = name.getText();
					name.setText("");
					titel.setVisible(false);
					titel.dispose();
					System.out.println(task);
				}			
			}
		});
		
		pan3.add(todo);
		pan3.add(name);
		pan3.add(bestätigen);
		
		titel.add(pan3);
		titel.setVisible(true);		
	}
	
	public String getTask(){
		return task;
	}	
}


Danke schon mal :)
 

arilou

Bekanntes Mitglied
In den ActionListenern deiner tasks ist

todo.aufruf()

nicht-modal, d.h. das Programm zeigt den JDialog an, wartet aber nicht auf die Eingabe - der ActionListener läuft "im Hintergrund" weiter/zu Ende, womit

titel = todo.getTask();

immer das noch "leere" ButtonToDo.task erwischt. Das lässt sich beheben durch

titel.setModal( true );

in ButtonToDo.erzeuge() .
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
O Variabeln aus einer andere Klasse dauerhaft einen anderen Wert übergeben Java Basics - Anfänger-Themen 5
E Wert in eine andere Klasse übergeben Java Basics - Anfänger-Themen 3
B Wert einer String Variable an andere String Variable in anderer Klasse uebergeben Java Basics - Anfänger-Themen 5
A übergabe wert in andere klasse Java Basics - Anfänger-Themen 8
L Wert an andere Klasse übergeben Java Basics - Anfänger-Themen 7
C Wert in andere Klasse übergeben Java Basics - Anfänger-Themen 10
TheMenox Methoden Bestimmung an welche Methode eine andere Methode ihren Wert weitergeben soll Java Basics - Anfänger-Themen 35
T Integer Wert in andere Methode übergeben Java Basics - Anfänger-Themen 2
A HSSFWorkbook als Return-Wert für Input in andere Methode Java Basics - Anfänger-Themen 5
M Wert von einer Methode in eine Andere übergeben Java Basics - Anfänger-Themen 6
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
A Negativ-Wert Java Basics - Anfänger-Themen 4
R finaler Wert in outerMethod von method in InnerMethodClass Java Basics - Anfänger-Themen 2
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
T Datum als Variable wert Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
Ostkreuz Wert von Arrays summieren Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
K Java gleicher Wert von Zahlen? Java Basics - Anfänger-Themen 5
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S Runden auf den niedrigsten Wert Java Basics - Anfänger-Themen 10
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
T Mit jedem Wert in der for-Schleife weiter arbeiten Java Basics - Anfänger-Themen 3
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
M Warum return die Methode den Wert nicht Java Basics - Anfänger-Themen 5
I Historisierung - Alter Wert, Neuer Wert... wie speichern? Java Basics - Anfänger-Themen 44
J Wert in Dropdown Menü kursiv schrieben Java Basics - Anfänger-Themen 19
H Uhrzeitespanne in Integer Wert umrechnen Java Basics - Anfänger-Themen 1
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
M Wie kann ich festlegen, dass ein Attribut maximal den Wert 0 erreicht, also nicht in den negativen Bereich fällt? Java Basics - Anfänger-Themen 4
M Methoden Wert einer Variable geht verloren? Java Basics - Anfänger-Themen 6
U Ascii wert verschieben, wie möglich? Java Basics - Anfänger-Themen 3
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
B in einem Array den nächstgelegenen Wert zu einem eingabewert finden Java Basics - Anfänger-Themen 8
D Einen boolischen Wert aus einer Methode in einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 11
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
J Wert zurückgeben über get Methode Java Basics - Anfänger-Themen 8
E Slider - Wert übergeben und überschreiben Java Basics - Anfänger-Themen 5
G Input/Output getText() gibt keinen Wert! Java Basics - Anfänger-Themen 13
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
H Den Wert einer rekursiven Funktion bestimmen Java Basics - Anfänger-Themen 5
T Feststellen, dass Wert zu groß; Caesar Chiffre Java Basics - Anfänger-Themen 3
J maximaler Wert eines Integers Java Basics - Anfänger-Themen 14
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
NeoLexx Abfrage mit instanceof führt zu unerwarteten Wert Java Basics - Anfänger-Themen 9
B Map<String, FilterMeta, wie Wert bekommen? Java Basics - Anfänger-Themen 4
ms_cikar Den Wert einer Hex. value bestimmten. Java Basics - Anfänger-Themen 8
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
S Integer Wert wird nicht übernommen Java Basics - Anfänger-Themen 2
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
1 Array nimmt falschen Wert auf! Java Basics - Anfänger-Themen 2
S Erste Schritte Button einen Wert zuweisen & diesen ausgeben Java Basics - Anfänger-Themen 2
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
V_Fynn03 Erste Schritte Einen Wert in ein TextField einfügen aus einer anderen Klasse Java Basics - Anfänger-Themen 3
J Wert zwischen JFrames übergeben Java Basics - Anfänger-Themen 2
J Umwandlung String zu ASCII-Wert und anders Java Basics - Anfänger-Themen 17
P Verzweigungen Wert zurück geben Java Basics - Anfänger-Themen 2
D Wert des Arrays unter Bedingungen ändern Java Basics - Anfänger-Themen 1
M Double Wert nach n abschneiden ohne zu runden Java Basics - Anfänger-Themen 1
F Boolean Methode Wert ausgeben. Java Basics - Anfänger-Themen 2
X Erste Schritte boolean wert ändert sich nicht? Java Basics - Anfänger-Themen 6
T Klassen Den Wert aus Array lesen lassen Java Basics - Anfänger-Themen 12
W Problem mit dem Wert von boolean-Variable Java Basics - Anfänger-Themen 3
J Wie kann ich z.B. einem int-Wert einen String-Wert zuweisen? Java Basics - Anfänger-Themen 2
H Einfache Frage zur Punktnotation objektname.methode(wert) Java Basics - Anfänger-Themen 2
D integer negativen Wert abspeichern Java Basics - Anfänger-Themen 3
L Wert einer Webeseiteauslesen Java Basics - Anfänger-Themen 6
D Erste Schritte Wert im Array suchen Java Basics - Anfänger-Themen 12
O Primzahl rekursiv mit einem Wert ohne i, wie? Java Basics - Anfänger-Themen 6
S Wert innerhalb eines anderen Wertes Java Basics - Anfänger-Themen 3
S Array doppelter Wert prüfen Java Basics - Anfänger-Themen 7
O Wert in einer Schleife unterschiedlich erhöhen Java Basics - Anfänger-Themen 2
B ArrayList besitzt einen Wert zu wenig Java Basics - Anfänger-Themen 16
D Compiler-Fehler Wert auf Datenbank übertragen und Sleep Thread Java Basics - Anfänger-Themen 3
F Java int-Wert wird resetet Java Basics - Anfänger-Themen 21
J Erste Schritte Wert aus JTextField zurückgeben Java Basics - Anfänger-Themen 6
CptK Bestimmten Integer Wert aus Array filtern Java Basics - Anfänger-Themen 2
B Liste von Integer -> Nächster Wert bekommen Java Basics - Anfänger-Themen 5
J Wert bei Objekterzeugung verändern Java Basics - Anfänger-Themen 12
I bestimmten Wert eines Arrays Java Basics - Anfänger-Themen 23
D Erste Schritte Java speichert wert des Scanners nicht Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben