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.
Eingabe aus JTextField/Area an eine andere Klasse übergeben.
Hallo,
ich möchte die Eingabe aus einem JTextfield in einer anderen Klasse als String haben, wenn ich dort einen JButton anclicke.
Wenn ich dem TextField mit setText einen String gebe funktioniert es, aber nicht bei dem was ich ins TextField eintippe.
Was mache ich Falsch?
lG
Java:
import javax.swing.JTextField;
public class MyTF
extends JTextField
{
/**
*
*/
private static final long serialVersionUID = -8951786487247510583L;
JTextField mytf;
String mytext;
public MyTF()
{
mytf = new JTextField(10);
// mit "mytf.setText();" bekomme ich den Text ausgegeben, aber nicht den Text den ich ins TextField tippe.
//mytf.setText("hola");
mytext = mytf.getText();
this.add(mytf);
}
public String getText()
{
return mytext;
}
}
Java:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ReadText {
MyTF tf;
JFrame f;
JLabel l;
JPanel p;
String text;
JButton b;
public ReadText()
{
f = new JFrame();
p = new JPanel(new GridLayout(2,1));
b = new JButton("save");
tf = new MyTF();
p.add(tf);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
text = tf.getText();
System.out.println(text);
}
});
p.add(b);
f.add(p);
f.setSize(600,600);
f.setVisible(true);
}
public static void main (String[] args)
{
new ReadText();
}
}
Hihi, erstmal die Lösung: lösch mal die getText-Methode un den String mytext, da das JTextField von dem du erbst bereits eine getText-Methode hat.
Warum: Wenn du den Text eingibst, per Hand, ist der Konstruktor von MyTF bereits durchgelaufen und da das die einzigste Stelle ist, an der du die Variable mytext änderst, wird sie logischerweise nicht geändert wenn du etwas anderes eingibst. Wenn du's jedoch vorher setzt ist es klar, das der Text dann auch in die Variable geschrieben wird.
Alternativ könntest du auch, wenn du nicht auf die selbstprogrammierte getText()-Methode verzichten kannst den ganzen Spaß über ein Change-Listener lösen, würde dir aber davon abraten .
Ich möchte eigentlich das Ganze gleich in einem JPanel mit zusätzlichen Componenten haben, weshalb ich mir eine eigene getText Methode machte.(war hier ein wenig blöd von mir rein gestell, da es so natürlich schon die getText Methode gab)
Ich habe es jetzt wie folgt geändert und es funktioniert.
Java:
import javax.swing.JPanel;
import javax.swing.JTextField;
public class MyTF
extends JPanel
{
/**
*
*/
private static final long serialVersionUID = -8951786487247510583L;
JTextField mytf;
JPanel myp;
public MyTF()
{
mytf = new JTextField(10);
myp = new JPanel();
myp.add(mytf);
this.add(myp);
}
public String getText() {
String mytext = mytf.getText();
return mytext;
}
}