# Inhalt von JTextField durch Klick auf JButton in JLabel anzeigen lassen



## Black_P (21. Mrz 2009)

hi@all,

ich schreibe grade ein kleines "Flaschendrehen-Spiel", als textbasiertes Programm hab ich es fertig, jetzt wollte ich mit GUI eine entsprechende Oberfläche erstellen, mein Problem ist jetzt aber, dass ich nicht weiß wie ich den eingegebenen Text aus einem JTextfield auf einem JLabel anzeigen bzw. speichern lassen kann wenn ich auf einen JButton klicke, habe schon diverse Threads durchgelesen und bin leider nicht wirklich schlau daraus geworden, könntet ihr mit bitte helfen?

hier ist mein Code für die Oberfläche:


```
import javax.swing.*;
import java.awt.*;

class Flaschendrehen_frame
{
  public static void main (String[]args)
  {
    JFrame f = new JFrame("Flaschendrehen");
    f.setVisible(true);
    f.setLocation(350, 350);
    f.setSize(300, 160);
    f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
    JPanel main = new JPanel(new BorderLayout());
    JPanel main2 = new JPanel(new BorderLayout());
    JPanel main3 = new JPanel(new BorderLayout());
    JPanel p1 = new JPanel(new BorderLayout());
    JPanel p2 = new JPanel(new BorderLayout());
    JPanel p3 = new JPanel(new BorderLayout());
    JPanel p4 = new JPanel(new BorderLayout());

    JLabel frage = new JLabel("Frage");
    JTextField eingabe = new JTextField("");
    JButton bestätigen = new JButton("Eingabe Bestätigen");
    JLabel anzeige = new JLabel("SPIELER-INFO");
    JButton spielen = new JButton("Spielen");

    p1.add(frage, BorderLayout.NORTH);
    p2.add(eingabe, BorderLayout.CENTER);
    p2.add(bestätigen, BorderLayout.EAST);
    p3.add(anzeige, BorderLayout.WEST);
    p4.add(spielen, BorderLayout.SOUTH);
    main2.add(p1, BorderLayout.NORTH);
    main2.add(p2, BorderLayout.CENTER);
    main2.add(p3, BorderLayout.SOUTH);
    main3.add(p4, BorderLayout.CENTER);
    main.add(main2, BorderLayout.CENTER);
    main.add(main3, BorderLayout.SOUTH);

    frage.setText("Wie viele Spieler sollen erzeugt werden? ");
    f.add(main);
    f.pack();

    
    JFrame frame= new JFrame();
    frame.setVisible(true);
    frame.setLocation(650, 355);
    frame.setSize(300, 120);
    JPanel panel = new JPanel(new BorderLayout());
    JLabel imageLabel= new JLabel(new ImageIcon("flasche.gif"));
    panel.add(imageLabel, BorderLayout.CENTER);
    frame.getContentPane().add(panel);
    frame.pack();
    frame.show();
    f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);

  }
}
```
hier ist ein Bild von der Oberfläche:








(da wo "SPIELER-INFO" steht soll dann der eingegebene Text stehen)

mfg Black_P


----------



## SvenK (21. Mrz 2009)

Deine Buttons brauchen noch einen ActionListener, da sonst bei einem Klick überhaupt nix passieren würde.

[highlight=Java]
bestaetigen.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
          anzeige.setText(eingabe.getText());
      }
});
[/highlight]

Dabei ist zu beachten, dass die Variablen bestaetigen (bitte ohne ä weil das mag Java nich) und anzeige entweder als final gekennzeichnet oder als Klassenattribute eingetragen sind.


----------



## Black_P (21. Mrz 2009)

is vlt. ne dumme frage, aber wo soll ich das jetz genau einfügen?


```
import javax.swing.*;
import java.awt.*;

class Flaschendrehen_frame
{
  public static void main (String[]args)
  {
    JFrame f = new JFrame("Flaschendrehen");
    f.setVisible(true);
    f.setLocation(350, 350);
    f.setSize(300, 160);
    f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
    JPanel main = new JPanel(new BorderLayout());
    JPanel main2 = new JPanel(new BorderLayout());
    JPanel main3 = new JPanel(new BorderLayout());
    JPanel p1 = new JPanel(new BorderLayout());
    JPanel p2 = new JPanel(new BorderLayout());
    JPanel p3 = new JPanel(new BorderLayout());
    JPanel p4 = new JPanel(new BorderLayout());

    JLabel frage = new JLabel("Frage");
    JTextField eingabe = new JTextField("");
    JButton bestaetigen = new JButton("Eingabe Bestätigen");
    final JLabel anzeige = new JLabel("SPIELER-INFO");
          bestaetigen.addActionListener(new ActionListener() {

            @Override

            public void actionPerformed(ActionEvent e) {

                anzeige.setText(eingabe.getText());

            }

      });
    JButton spielen = new JButton("Spielen");

    p1.add(frage, BorderLayout.NORTH);
    p2.add(eingabe, BorderLayout.CENTER);
    p2.add(bestaetigen, BorderLayout.EAST);
    p3.add(anzeige, BorderLayout.WEST);
    p4.add(spielen, BorderLayout.SOUTH);
    main2.add(p1, BorderLayout.NORTH);
    main2.add(p2, BorderLayout.CENTER);
    main2.add(p3, BorderLayout.SOUTH);
    main3.add(p4, BorderLayout.CENTER);
    main.add(main2, BorderLayout.CENTER);
    main.add(main3, BorderLayout.SOUTH);

    frage.setText("Wie viele Spieler sollen erzeugt werden? ");
    f.add(main);
    f.pack();

    
    JFrame frame= new JFrame();
    frame.setVisible(true);
    frame.setLocation(650, 355);
    frame.setSize(300, 120);
    JPanel panel = new JPanel(new BorderLayout());
    JLabel imageLabel= new JLabel(new ImageIcon("flasche.gif"));
    panel.add(imageLabel, BorderLayout.CENTER);
    frame.getContentPane().add(panel);

    frame.pack();
    frame.show();
    f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);


  }
}
```
da bekomm ich folgende Fehlermeldung:

```
Flaschendrehen_frame.java:25:45: cannot find symbol
symbol  : class ActionListener
location: class Flaschendrehen_frame
          bestaetigen.addActionListener(new ActionListener() {
```


ich weiß nich so wirklich wie ich das einbauen muss


----------



## SvenK (21. Mrz 2009)

Also die Stelle, wo du es eingefügt hast, ist ganz passend.

Was bei dir noch fehlt ist das korrekte Importstatement. Offenbar werden Interfaces (wie ActionListener) bei import java.awt.*; nicht berücksichtigt.
[highlight=Java]import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;[/highlight]

Darf ich dich fragen, welche IDE du benutzt?


----------



## Black_P (21. Mrz 2009)

der heißt  einfach nur Java-Editor

hier ist der Link zu der Seite:

Java-Editor


----------



## SvenK (21. Mrz 2009)

Black_P hat gesagt.:


> der heißt  einfach nur Java-Editor
> 
> hier ist der Link zu der Seite:
> 
> Java-Editor


Zu dem kann ich jetzt nicht viel sagen. Bei Eclipse zum Beispiel gibt es eine "Organize Imports"-Funktion, die automatisch (also mehr Knopfdruck) deine Imports verwaltet (unnötige imports entfernen, fehlende hinzufügen)


----------



## Black_P (21. Mrz 2009)

naja, geht bei meinem leider nicht


----------



## Black_P (21. Mrz 2009)

dann danke ich dir für die schnelle Hilfe, jetzt kann ich endlich weiter machen


----------



## Ebenius (23. Mrz 2009)

SvenK hat gesagt.:


> Was bei dir noch fehlt ist das korrekte Importstatement. Offenbar werden Interfaces (wie ActionListener) bei import java.awt.*; nicht berücksichtigt.
> [highlight=Java]import java.awt.event.ActionEvent;
> import java.awt.event.ActionListener;[/highlight]


*hust* Offenbar werden einfach nur Klassen und Interfaces aus "java.awt.*event*" nicht importiert, wenn man nur "java.awt.*" importiert. Richtig.

Ebenius


----------

