Textfield eingaben als Variable/Array Speichern

Alles zur oder um die NetBeans IDE

Moderator: arittner

Textfield eingaben als Variable/Array Speichern

Beitragvon creeep10 » 26.10.2009, 22:30

Guten Abend,

Wie im betreff erwähnt würde ich gerne Textfieldeingaben als Variablen bzw in Variablen speichern.

Code: Alles auswählen
private void NamenseingabeKeyPressed(java.awt.event.KeyEvent evt) {                                         

        if (evt.getKeyChar() == 13){
        }
    }   


das obere habe ich schon fertig gestellt, halt wenn ich enter drücke soll etwas passieren.
Problem ist nur das ich nicht weiß wie ich die Eingaben als Arrays speichere.
Denn ich muss 26 Eingaben machen und muss auch einstellen das er nach jedem enter die Variable wechselt in die er schreibt.
hoffe auf schnelle hilfe

MfG Creeep :)
creeep10
 
Beiträge: 20
Registriert: 26.10.2009, 20:54

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon andreasCH » 26.10.2009, 23:23

Salü

Mit .getText() bekommst du den Inhalt des Textfeldes als String zurück.

Gruess Andreas
andreasCH
 
Beiträge: 11
Registriert: 17.08.2008, 22:18
Wohnort: Kallern Aargau Schweiz

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon creeep10 » 27.10.2009, 00:07

Nabend,

Kann es sein das man mit .getText nur vorhandenen Objekten in meinem Fall Labels das eingegebene gibt?
Denn als ich ihm eine meiner Variablen gegeben habe zeigte er mir das Error "cannot find Symbol".

und selbst wenn das geschafft wäre, muss ich dann für jedes Label ein extra .getText machen? Das kann doch garnicht funktionieren weil dann doch alle den selben Inhalt hätten.

Tut mir leid falls die Fragen etwas dumm erscheinen, ich bin Anfänger :oops:

MfG Creeep10:)
creeep10
 
Beiträge: 20
Registriert: 26.10.2009, 20:54

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon andreasCH » 27.10.2009, 00:47

Salü

Du kannts .getText() auf das jeweilige Textfeld anwenden, von dem du den Inhalt auslesen möchtest. Zum Beispiel textField1.getText() gibt dir den Inhalt des Textfeldes mit der Bezeichnung textField1 zurück.

Es ist mir momentan etwas unklar was du genau vor hast, ich interpretier deine Frage mal so, dass der User 26 Einträge machen soll. Soll das immer im selben Textfeld geschehen, oder hast du 26 verschiedene Textfelder in deiner Eingabemaske? Falls immer ins selbe Textfeld geschrieben werden soll, würde ich eine Schleife machen, in der du den Text aus dem Textfeld ausliest, diesen in einem String-Array speicherst und dann das Textfeld wieder löschst.

Du schreibst in deinem letzten Eintrag von Labels, aber in diese kann der Benutzer keinen Text schreiben, dazu brauchst du Textfelder.

Hoffe ich konnte dir damit schon etwas weiterhelfen.

Gruess
Andreas
andreasCH
 
Beiträge: 11
Registriert: 17.08.2008, 22:18
Wohnort: Kallern Aargau Schweiz

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon arittner » 27.10.2009, 12:15

Moin!

creeep10 hat geschrieben:
Code: Alles auswählen
private void NamenseingabeKeyPressed(java.awt.event.KeyEvent evt) {                                         
        if (evt.getKeyChar() == 13){
        }
    }   



Textfelder haben einen Action-Listener, der auf Enter reagiert. Ich für nicht auf KeyPressed reagieren.

Beste Grüße,
Josch.
JNBB/BeanDev: Das deutsche Blog zur NetBeans Platform
Bild
Sun Certified Specialist for NetBeans IDE
Benutzeravatar
arittner
 
Beiträge: 2886
Registriert: 05.08.2008, 08:20
Wohnort: Südniedersachsen

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon creeep10 » 27.10.2009, 16:27

Tag,

Momentan bin ich nicht am meinem eigennen Computer deshalb kann ich eure Tipps nicht ausprobieren.
Aber ich wollte etwas erläutern wofür ich das Programm mache:

Ich baue FREIWILLIG(Es ist KEINE Hausaufgabe) für meinen Lehrer ein Programm indem die Sitzordnung unseres Kurses zufällig ausgegeben wird.
Ich habe mir das so gedacht das ich 1 Textfield mache wo mein Lehrer 26 Namen eingeben kann und dann habe ich in der Reihenfolge wie die tische stehen 26 Labels reingebaut die dann am ende den Namen anzeigen sollen(als erklärung zu Andreas "Frage").

Probleme sind halt:
1.) Das Random aber momentan ist das nur Nebensache.

2.) Das speichern der eingaben per Enter als String.

andreasCH hat geschrieben:Du kannts .getText() auf das jeweilige Textfeld anwenden, von dem du den Inhalt auslesen möchtest. Zum Beispiel textField1.getText() gibt dir den Inhalt des Textfeldes mit der Bezeichnung textField1 zurück.

Falls immer ins selbe Textfeld geschrieben werden soll, würde ich eine Schleife machen, in der du den Text aus dem Textfeld ausliest, diesen in einem String-Array speicherst und dann das Textfeld wieder löschst.

Falls ich das mit einer Schleife machen würde hätte ich doch wieder das Problem das er textfield1 z.b. immer überschreibt oder verstehe ich da einfach etwas falsch?

arittner hat geschrieben:Textfelder haben einen Action-Listener, der auf Enter reagiert. Ich für nicht auf KeyPressed reagieren.

Ich habe bei diesem Computer kurz nachgeschaut, entweder liegt es an der Deutschen version(ich bin im Besitz der englischen) oder ich suche einfach an der falschen stelle, aber den Action-Listener habe ich nicht gefunden.
Das ist doch unter "Action" bzw. "Ereignisse" irgendwo zu finden oder?

Genaueres wenn ich wieder an meinem Eigennen Rechner sitze.

MfG Creeep10
creeep10
 
Beiträge: 20
Registriert: 26.10.2009, 20:54

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon andreasCH » 27.10.2009, 17:26

Salü Creeep10

Mit textfield1 habe ich das Objekt gemeint, dass bei dir wohl Namenseingabe heisst, also dass Textfeld in das die Namen eingegeben werden sollen.

Mit Namenseingabe.getText() bekommst du den Inhalt dieses Textfeldes als String zurückgeliefert, denn du in einem Array ablegen kannst. Diesen Array und eine Variable in der du speicherst wieviele Namen schon eingegeben wurden, musst du schon beim Aufbau des GUI's initialisieren, so dass du, bei jedem mal wenn die Enter-Taste gedrückt wird, den Inhalt des Textfeldes ins Array schreiben und die Variable um eins erhöhen kannst, bis alle 26 Namen eingegeben wurden. Eine Schleife musst du in diesem Sinne nicht ausprogrammieren, sondern das macht ja dann der Benutzer.

Den Action-Listener den Josch meinte wird mit ActionPerformed bezeichnet und ist unter Events zu finden, wo du auch KeyPressed her hast.

Gruess Andreas
andreasCH
 
Beiträge: 11
Registriert: 17.08.2008, 22:18
Wohnort: Kallern Aargau Schweiz

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon creeep10 » 28.10.2009, 00:07

Nabend,

andreasCH hat geschrieben:Diesen Array und eine Variable in der du speicherst wieviele Namen schon eingegeben wurden, musst du schon beim Aufbau des GUI's initialisieren, so dass du, bei jedem mal wenn die Enter-Taste gedrückt wird, den Inhalt des Textfeldes ins Array schreiben und die Variable um eins erhöhen kannst, bis alle 26 Namen eingegeben wurden. Eine Schleife musst du in diesem Sinne nicht ausprogrammieren, sondern das macht ja dann der Benutzer.
Gruess Andreas

Mal schauen ob ich das richtig verstehe:
bei dem Design was ich gemacht habe muss ich jetzt für mein textfield eine Array definieren welche sich immer um einen erhöht bis 26 eingaben gemacht sind.
dafür brauch ich halt die schleife nicht, nur weiß ich nicht genau was du mit "aufbau des GUI´s" meinst, ich hab bissl gegooglet und das wäre nach meinem verständnis das Design das ich gemacht habe, ist das richtig?

andreasCH hat geschrieben:Den Action-Listener den Josch meinte wird mit ActionPerformed bezeichnet und ist unter Events zu finden, wo du auch KeyPressed her hast.

Jo ActionPerformed habe ich gefunden, nur weiß ich nicht was ich da reinschreiben muss damit er falls Enter gedrückt wird etwas passiert bzw das er es speichert.

Achja ich habe da etwas gelesen, würde es mit dieser oder so einer ähnlichen Schleife Funktionieren?
Code: Alles auswählen
private void NamenseingabeActionPerformed(java.awt.event.ActionEvent evt) {                                             

for(int i = 0; i<26; i++){

evt.out.printIn(JLabel[i].getText());
}}


MfG Creeep10
creeep10
 
Beiträge: 20
Registriert: 26.10.2009, 20:54

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon arittner » 28.10.2009, 10:18

Moin!

actionPerformed ist eine Methode für den ActionListener und bekommt über den ActionEvent-Parameter die Quelle mit. Das wäre Dein JTextField, das Du dann mit getText() abfragen kannst.

Du sprichst aber die ganze Zeit von mehr als einem JTextField. Also musst Du auch überlegen, an welcher Stelle Du das Eingabe-Ergebnis erfassen willst. Bei jedem Feld mit Enter? Oder wenn der Benutzer alles eingegeben hat und dann "wegspeichern"? Vielleicht wäre es dann nützlicher einen Ok-Button in dem Fenster zu haben und von dort alle Felder auszulesen?

Außerdem unter Windows verlässt der User das JTextFeld mit TAB, dann reagiert actionPerformed übrigens nicht. Aber ich glaube nicht, dass es sinnvoll ist jedes Textfeld einzeln abzufragen.

Beste Grüße,
Josch.
JNBB/BeanDev: Das deutsche Blog zur NetBeans Platform
Bild
Sun Certified Specialist for NetBeans IDE
Benutzeravatar
arittner
 
Beiträge: 2886
Registriert: 05.08.2008, 08:20
Wohnort: Südniedersachsen

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon creeep10 » 28.10.2009, 14:31

Anscheinend gibt es hier wieder ein paar verständnisprobleme...
Also ich versuche mal das alles hier so zu erklären wie ich es haben will:

Benutzte Objekte:
26 JLabels
1 Textfield
1 Button

Funktionen:
26 JLabels --> sollen anzeigen welcher Name per Zufall zugewiesen wird, bzw halt ein Anzeigefenster

1 Textfield --> soll ein eingabefeld sein wo ich die 26 Namen eingebe und dann per Enter bestätige, dieser Name soll i.-wo gespeichert werden(z.b. als String in ner Array)

1 button --> Soll wenn ich drauf klicke die Eingaben mischen und per zufall in die JLabels einfügen

meine Probleme sind halt immernoch:

Wie kriege ich die Eingabe des Textfields per Enter gespeichert?

Wie Mische ich die eingaben?

Wenn die eingaben gemischt sind wie mache ich das, das die Labels die anzeigen werden?
(etwa mit .setText()?)

Für ein besseres Bild von dem ganzen nochmal ein screenshot des designs:
Bild


so nun zu dem was Josch sagt:

arittner hat geschrieben:
actionPerformed ist eine Methode für den ActionListener und bekommt über den ActionEvent-Parameter die Quelle mit. Das wäre Dein JTextField, das Du dann mit getText() abfragen kannst.

also müsste ich ein anderes objekt z.b. eins meiner Labels auswählen und dann .getTextt(); benutzen damit diese das zeigen?

arittner hat geschrieben:Du sprichst aber die ganze Zeit von mehr als einem JTextField. Also musst Du auch überlegen, an welcher Stelle Du das Eingabe-Ergebnis erfassen willst. Bei jedem Feld mit Enter? Oder wenn der Benutzer alles eingegeben hat und dann "wegspeichern"? Vielleicht wäre es dann nützlicher einen Ok-Button in dem Fenster zu haben und von dort alle Felder auszulesen?

Ich weiß nicht wo ich von mehr als einem Textfield geredet habe falls doch tut es mir leid, ich habe nur eins.
Ich will bei jedem druck von Enter die Eingabe speichern, was aber nicht so ganz klappen will.

arittner hat geschrieben: Aber ich glaube nicht, dass es sinnvoll ist jedes Textfeld einzeln abzufragen.

Glaube ich auch nicht, deshalb habe ich keine 26 textfields eingefügt welche man dann einzeln durchgehen muss.

Ich hoffe jetzt ist alles ein bisschen klarer damit man weiß was ich machen will

MfG Creeep10
creeep10
 
Beiträge: 20
Registriert: 26.10.2009, 20:54

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon andreasCH » 29.10.2009, 00:16

Salü

creeep10 hat geschrieben:Mal schauen ob ich das richtig verstehe:
bei dem Design was ich gemacht habe muss ich jetzt für mein textfield eine Array definieren welche sich immer um einen erhöht bis 26 eingaben gemacht sind.
dafür brauch ich halt die schleife nicht, nur weiß ich nicht genau was du mit "aufbau des GUI´s" meinst, ich hab bissl gegooglet und das wäre nach meinem verständnis das Design das ich gemacht habe, ist das richtig?

Ja, das GUI (engl. Graphical User Interface) ist die grafische Benutzeroberfläche des Programmes, die der Benutzer zu sehen bekommt. Mit "Aufbau des GUI's" habe ich den Zeitpunkt gemeint, wenn dein Programm die Methode initComponents(); aufruft. An gleicher Stelle würde ich das Array, in das du die Namen speichern willst, initialisieren.

Ich denke am besten wird es wohl sein, wenn du Schrittweise vorgehst:
Versuche als erstes mal die Namen nicht zu speichern, sondern einfach auf die Konsole auszugeben.
Danach erweiterst du die Funktionalität damit, dass du das Textfeld wieder leerst, wenn du den Namen ausgegeben hast.
Bei diesen zwei Punkten lernst du die Methoden getText() und setText() des Textfeldes kennen, so dass die dir danach klarer sein sollten.
Wenn das klappt kannst du die Namen statt auf die Konsole, in dein Array schreiben.
So siehst du bei jedem Schritt, ob alles so klappt wie du es dir vorstellst.

Gruess Andreas
andreasCH
 
Beiträge: 11
Registriert: 17.08.2008, 22:18
Wohnort: Kallern Aargau Schweiz

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon creeep10 » 30.10.2009, 15:25

Guten tag,

Ich habe sogar beim gewöhnlichen setText() einen fehler!
Ich habe jetz eingestellt das er wenn ich den Button drückt JLabel1.setText(""+JTextfield); macht.
Und wenn ich es starte(es gibt keine errors) und auf den Knopf drücke kommt bei dem JLabel i.-wie java.swin.... und für den rest ist es zu klein,
wie krieg ich die anzeige von dem java.swing etc weg?
creeep10
 
Beiträge: 20
Registriert: 26.10.2009, 20:54

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon arittner » 30.10.2009, 15:43

Moin!

Ich glaube, Du musst relativ weit Vorne anfangen und erstmal sehr kleine Beispiele durch programmieren. Aber auch da helfen wir gerne weiter.

Jedes Java-Objekt besitzt eine Methode toString() und generell gibt toString() den Klassennamen des Objektes und den HashCode zurück. Der + Operator in Java wird von dem Java Compiler in new StringBuffer().append (object).append(object)... umgewandelt. Und die append()-Methode ruft immer die toString()-Methoden der Objekte auf.

Damit hast Du nun eine Erklärung Deines Ergebnisses.

Wenn Du den Text aus dem Textfeld haben willst, musst Du getText() verwenden.

Üblicherweise gibt es in Java-Objekten immer zu jedem Feld (hier text) zwei Methoden: get* und set* oder (bei boolean Feldern) is*und set*. Diese Kombination nennt man "Property"-Access. Willst Du also in einem JTextField das text-Property abfragen (was vom Typ String ist) nimmst Du die Methode getText(). Willst Du dem Text-Feld einen Text zuweisen verwendest Du setText (meineZeichenKette).

Wenn Du mit dem GUI-Builder arbeitest und Dir dort im Inspector die Properties der GUI-Komponenten anschaust siehst Du dort alle verfügbaren Eigenschaften/Properties einer Komponente. Damit ist Dir bekannt, welche Werte Du auslesen und schreiben kannst und weiterhin weißt Du jetzt, dass Du die Werte immer mit set[Name des Property] schreiben kannst und mit get|is[Name des Property] auslesen kannst.

Dein Beispiel:

Code: Alles auswählen
JLabel1.setText(""+JTextfield);


Sollte also heißen:

Code: Alles auswählen
JLabel1.setText(JTextfield.getText());


Es ist auch sehr hilfreich die GUI-Komponenten mit "schönen" Namen zu versehen.

""+JTextfield ist nichts anderes als: new StringBuffer("").append (JTextfield.toString()).

Beste Grüße,
Josch.
JNBB/BeanDev: Das deutsche Blog zur NetBeans Platform
Bild
Sun Certified Specialist for NetBeans IDE
Benutzeravatar
arittner
 
Beiträge: 2886
Registriert: 05.08.2008, 08:20
Wohnort: Südniedersachsen

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon creeep10 » 30.10.2009, 17:29

Nabend,

okay dann weiß ich mit dem + jetzt ein bisschen Bescheid.
Aber ich finde es trotzdem merkwürdig, ich habe mal ein anderes kleines Programm(nach Anleitung) geschrieben vllt kennen manche hier den Celcius Calculator, und dort konnte ich JLabel.setText(Inteingabe + "Fahrenheit"); benutzen.
Achja, arritner du brauchst dir keine Sorgen um die Namen zu machen, ich schreibe sie nur hier als JLabel etc. damit ihr besser versteht was ich meine :)

nun gut, wenn ich auf den button drücke...kriegt mein Jlabel den geschriebenen Text.
Wenn ich mich an Andreas Plan halte sollte ich nun versuchen die eingabe in eine Variable zu speichern, ist das...
Code: Alles auswählen
        for(int i=0;i==26;i=i++){

            schüler[i] = JTextfield.getText();

        }

..ein guter Anfang?
Also eine Fehlermeldung krieg ich schonmal nicht, nur weiß ich nicht wie ich das auslösen soll, also das die Schleife vorran geht.

MfG Creeep10
creeep10
 
Beiträge: 20
Registriert: 26.10.2009, 20:54

Re: Textfield eingaben als Variable/Array Speichern

Beitragvon stefan79 » 02.11.2009, 13:54

Hi!

creeep10 hat geschrieben:Aber ich finde es trotzdem merkwürdig, ich habe mal ein anderes kleines Programm(nach Anleitung) geschrieben vllt kennen manche hier den Celcius Calculator, und dort konnte ich JLabel.setText(Inteingabe + "Fahrenheit"); benutzen.

Wenn IntEingabe ein Integer/int ist, wird das auch funktionieren, da toString von int/Integer den wirklichen Zahlenwert retourniert. Willst du das wirklich?

creeep10 hat geschrieben:
Code: Alles auswählen
for(int i=0;i==26;i=i++){
            schüler[i] = JTextfield.getText();
        }



Diese Schleife bedeuted:
-) i=0: I bekommt den Startwert von 0
-) i==26: Die Schleife geht solange bis i den Wert 26 hat
-) i++: Bei jedem Durchlauf wird i um eins erhöht.

Siehe dazu auch http://openbook.galileocomputing.de/javainsel8/javainsel_02_007.htm#mj50b6af77607500c5bb627942187e9205.

In deinem Beispiel werden jetzt allen 26 Werten im Array der Wert des Textfeldes zugewiesen.

Ps.: Umlaute sind in Java zwar erlaubt, ich würde diese aber trotzdem nicht verwenden.

lg
Stefan
stefan79
 
Beiträge: 336
Registriert: 28.11.2007, 22:24

Nächste

Zurück zu NetBeans - IDE

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast