1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Variable Anzahl an Formularfeldern

  • Caps333
  • 16. Juni 2007 um 16:34
  • Unerledigt
  • Caps333
    3
    Caps333
    Mitglied
    Punkte
    85
    Beiträge
    11
    • 16. Juni 2007 um 16:34
    • #1

    Hallo, ich hätte eine kleine Fragen bzgl. eines meiner Java-Projekte.
    1) Ich möchte ein kleines Hangman-Spiel programmieren. Dazu hab ich folgenden Ablauf:
    a) Wort wird in ein Formularfeld eingegebeb
    b) Länge des Strings wird ausgelesen
    c) Jeder Buchstabe wird in ein char-Array gespeichert.

    Jetzt zu meiner Frage: Ich möchte, je nach Länge des Wortes eine unterschiedliche Anzahl von TextFields haben. Wie erreiche ich das? Duch eine einfache Schleife gehts nicht, da ja sonst z.B. 5 TextFields den gleichen Namen haben :frowning_face:

  • Paulchen
    1
    Paulchen
    Gast
    • 16. Juni 2007 um 16:39
    • #2
    Zitat von Caps333

    Jetzt zu meiner Frage: Ich möchte, je nach Länge des Wortes eine unterschiedliche Anzahl von TextFields haben. Wie erreiche ich das? Duch eine einfache Schleife gehts nicht, da ja sonst z.B. 5 TextFields den gleichen Namen haben :frowning_face:

    Verwende ein Array von TextFields.

  • Caps333
    3
    Caps333
    Mitglied
    Punkte
    85
    Beiträge
    11
    • 16. Juni 2007 um 17:00
    • #3

    Danke für die schnelle Antwort. Wie sieht denn dann der Syntax aus?


    TextField[] Test;
    Test[0] = new TextField("",20);
    Test[1] = new TextField("",20);
    Test[2] = new TextField("",20);


    bzw.

    TextField[] Test;
    Test[] = new TextField("",20);
    Test[] = new TextField("",20);
    Test[] = new TextField("",20);

    Bei beiden Bsp. kommt folgende Fehlermeldung:
    MainPanel.java:21:16: ']' expected Test[0] = new TextField("",20);
    bzw.
    MainPanel.java:21:19: <identifier> expected Test[] = new TextField("",20);

  • Paulchen
    1
    Paulchen
    Gast
    • 16. Juni 2007 um 17:13
    • #4
    Zitat von Caps333

    Danke für die schnelle Antwort. Wie sieht denn dann der Syntax aus?

    Du musst das Array initialisieren, bevor zu Schreibzugriffe auf dessen Elemente ausführen kannst:

    Code
    TextField[] Test = new TextField[3];
    Test[0] = new TextField("",20);
    Test[1] = new TextField("",20);
    Test[2] = new TextField("",20);

    Das Fehlen dieser Initialisierung führt allerdings nicht zu dem von dir beschriebenen Fehler, sondern zu "variable Test might not have been initialized".

  • Caps333
    3
    Caps333
    Mitglied
    Punkte
    85
    Beiträge
    11
    • 16. Juni 2007 um 17:17
    • #5

    Hm, das hab ich auch schon probiert. Selbst wenn ich deinen Code in mein Programm einfüge, kommen folgende Fehler in allen Zeilen wo ein "Text[x]" steht:

    MainPanel.java:21:6: ']' expected
    Test[0] = new TextField("",20);
    ^
    MainPanel.java:21:15: invalid method declaration; return type required
    Test[0] = new TextField("",20);


    Ich kopier mal den restlichen Quelltext hier rein, vll. liegt das Problem ja ganz woanders...


    PHP
    import java.awt.*;
    import java.awt.event.*;
    
    
    public class MainPanel extends Panel {
      int n = 0;
    
    
      //Variablen festlegen
      Label LsecWord = new Label("Geheimes Wort:");
      TextField TFsecWord = new TextField("",25);
      Button f1 = new Button("Buchstabenanzahl ermitteln");
      TextField TFlaenge = new TextField("",25);
    
    
      //Als Test ein Array erstellen (führt zu oben beschriebenen Fehler
      TextField Test[] = new TextField[3];
      Test[0] = new TextField();
      Test[1] = new TextField();
      Test[2] = new TextField();
    
    
        
      //Konstruktor  (für Layout)
      MainPanel () {
        setLayout(new FlowLayout());    //Layoutmanager
    
    
        add(LsecWord);
        add(TFsecWord);
        add(f1);  f1.addActionListener(new f1_ActList());
      }
    
    
      //ActionListener
      class f1_ActList implements ActionListener {
        public void actionPerformed(ActionEvent e) {
          String secWord = TFsecWord.getText();       //Wort holen
          n = secWord.length();                       //Wortlänge bestimmen
          Hauptprogramm(n, secWord);
        }
      }
    
      //Funktion: Hauptprogramm
      boolean Hauptprogramm (int n, String secWord) {
        //Hauptprogramm
        if (n != 0) {
          char[] Wort = new char [n];
    
    
          for (int i=0; i<n; i++) {
            Wort[i] = secWord.charAt(i);
          }
        }
        return true;
      }
    }
    Alles anzeigen
  • beat
    14
    beat
    Mitglied
    Reaktionen
    2
    Punkte
    2.007
    Beiträge
    338
    • 16. Juni 2007 um 17:25
    • #6

    importier mal javax.swing.*;

    Visit: http://itunes.apple.com/de/artist/cbh-mobile/id338117761

  • Paulchen
    1
    Paulchen
    Gast
    • 16. Juni 2007 um 17:43
    • #7
    Zitat von Caps333

    Hm, das hab ich auch schon probiert. Selbst wenn ich deinen Code in mein Programm einfüge, kommen folgende Fehler in allen Zeilen wo ein "Text[x]" steht:

    Schreib die Zeilen

    Code
    Test[0] = new TextField();
      Test[1] = new TextField();
      Test[2] = new TextField();

    in den Konstruktor.

    Zitat von beat

    importier mal javax.swing.*;

    Caps333 verwendet AWT (TextField und nicht JTextField), und java.awt.* wird importiert.

  • Caps333
    3
    Caps333
    Mitglied
    Punkte
    85
    Beiträge
    11
    • 16. Juni 2007 um 21:50
    • #8

    Vielen Dank, jetzt funktioniert es.

  • beat
    14
    beat
    Mitglied
    Reaktionen
    2
    Punkte
    2.007
    Beiträge
    338
    • 16. Juni 2007 um 23:58
    • #9

    wg dem actionListener:

    Es gibt einen KeyListener

    der hat die methoden keyPressed, keyReleased, keyTyped und irgendwas noch. Du sagst dann einfach anyTextfield.addActionListener(this) und schreibts in die methoden den code der bei dem event ausgeführt werden soll

    Visit: http://itunes.apple.com/de/artist/cbh-mobile/id338117761

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung