Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich möchte gern auf werte, aus einem jTextField, von einem anderen frame abrufen.
also in frame1 ist das jTextField und in dem gleichzeitig geöffnettem Frame2 möchte
ich den wert aus dem Textfeld auslesen und als integer x speichern.
wie funktioniert das, oder funktioniert das überhaupt? ???:L MFG
1. Möglichkeit:
du kannst beim erstellen von frame2 eine Referenz auf das JTextField des frame1 übergeben.
2. Möglichkeit(schönere Vraiante):
du schreibst im frame2 eine getter Methode, die den wert der TextFeldes zurückgibt. diese darf nicht private sein. in frame2 brauchst du eine referenz auf frame1 und kannst dann mittels
frame1.getTextFileldValue(); oder wie deine Methode heissen wird den Wert auslesen.
Also mir würde jetzt mal spontan die möglichkeit über den PropertyChangeListener einfallen. Sprich den in beide Frames implementieren und eine firePropertyChange(String a, String b) vom zweiten Frame losschicken und vom ersten catchen lassen (als anfrage sozusagen). Dann im ersten Frame den JTextField Wert wieder mit ner firePropertyChange(...) loschicken und vom zweiten abfangen lassen, wo du mit dem wert dann arbeiten kannst.
Hier mal n Beispiel:
Code:
public class Frame1 extends Frame implements java.beans.PropertyChangeListener
{
...
public void propertyChange(java.beans.PropertyChangeEvent event) //Die Methode, die ausgeführt wird, wenn ein
{ // request vom zweiten Frame kommt
if(event.getPropertyName().equals("Frame2Request"))
{
String newValue = textField.getText();
firePropertyChange("Frame1Answer", "", newValue);
}
}
}
Code:
public class Frame2 extends Frame implements java.beans.PropertyChangeListener
{
...
public requestTextFieldValue() { //methodeUmDenWertDesAnderenFramesAbzufragen
firePropertyChange("Frame2Request", "", "");
}
public void propertyChange(java.beans.PropertyChangeEvent event)
{
if(event.getPropertyName().equals("Frame1Answer"))
{
String newValue = (String)event.getNewValue();
//in newValue sollte dann der neue Wert sein mit dem du jetzt im zweiten Frame arbeiten kannst
}
}
}
Also wenn jemand nen besseren Vorschlag hat bitte posten (ich bin schließlich auch noch Anfänger...)
Moin,
das mit dem Listener macht nur dann Sinn, wenn direkt auf eine Änderung reagiert werden soll.
Was spricht gegen die Übergabe einer Referenz von Frame1 an Frame2, z.B. im Konstruktor? Dann in Frame1 eine public int Methode getTextFieldValue() implementieren und in Frame2 auslesen per
int iTextFieldValue = referenceToFrame1.getTextFieldValue();
oh. merke gerade, dass ich die aufgabestellung auch falsch verstanden hatte. dachte er bräuchte den wert von frame 1 in frame 2 der zu laufzeit abgefragt wird. Sry.