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.
Text aus Textfeld per Actionlistener in Label ausgeben.
Ich möchte, dass bei klick auf Button OK der in das Textfeld geschriebene Text im label1 erscheint. Dies sollte in der Methode actionPerformed passieren, allerdings scheitere ich in der Methode daran den Text vom Textfeld in das label zu übernehmen. Wisst ihr, wass ich genau in die Methode schreiben muss, damit der Text ausgegeben wird?
Die Variablen für das betroffene TextFeld und das Label sind so in deiner actionPerformed-Methode auch nicht bekannt. Die Variablen müssen in deinem Fall als Klassenvariablen (am besten private) angelegt werden, damit du auch in anderen Methoden auf diese zugreifen kannst.
class Test extends JFrame implements ActionListener {
private JLabel _test;
public Test() {
// blablabla
_test = new JLabel();
JButton b = new JButton("OK");
b.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
_test.setText("neuer Text");
}
}
Ich erzeuge also eine private Stringvariable. Wie kann ich allerdings in der Methode dann festlegen, dass der String auf dem Label ausgegeben wird? Das müsste doch so gehen:
String xyz = label1.getText();
Wenn ich das in die methode schreibe, dann erscheint allerdings die fehlermeldung "label1 cannot be resolved"
Ich erzeuge also eine private Stringvariable. Wie kann ich allerdings in der Methode dann festlegen, dass der String auf dem Label ausgegeben wird? Das müsste doch so gehen:
String xyz = label1.getText();
Wenn ich das in die methode schreibe, dann erscheint allerdings die fehlermeldung "label1 cannot be resolved"
1. Das was du da versuchst gibt nicht den String auf dem Label aus, sondern speichert den Labeltext im String
2. Musst du dir keine private Stringvariableanlegen, sondern dein Label als Klassenvariable deklarieren (siehe das Minibeispiel: _test) um in allem Methoden der Klasse darauf zugreifen zu können.
Hab grad nochmal deine Frage genau gelesen und gesehen, dass du ja den Text vom Textfeld auf dem Label anzeigen willst.
Dann brauchst du eh keine Stringvariable dazwischen. Du musst nur BEIDE Elemente (Textfeld und Label) als Klassenvariablen deklarieren und kannst dann in der Methode drauf zugreifen
Code:
class .......
private JTextField _textfeld;
private JLabel _label;
public ..... {
// blablabal
_textfeld = new JTextField();
_label = new JLabel();
}
public void actionPerformed(ActionEvent e) {
// Hier könntest du ggf. auch noch Sicherheitsabfragen einbauen (z. B. Prüfen ob _label != null oder so)
_label.setText(_textfeld.getText());
}
}
Ich habe dies Ausgabe auf dem label soweit hinbekommen. Das Problem ist nur, dass die Anordnung auf dem Layout nihct schön aussieht:
- Das 1. Textfeld wird von dem Label "Label("Name:")" lnks überdeckt
- Das Ausgabelabel überdeckt mein Label "JLabel("Ausgabe:")" ganz
Ich blicke mit den ganzen gridx, y und weighty , x nicht durch. Wisst ihr welche Werte ich eintragen muss, damit das alles schön geordnet ausgegeben werden kann?