Prob. beim dynamischen Erzeugen v. Obj!

Status
Nicht offen für weitere Antworten.

maxwell

Mitglied
hallo,

da ich im forum nichts dergleichen gefunden habe,muss ich mich wieder an euch wenden: ich will,dass bei jedem methodenaufruf (addInputFields) ein neues TextField erzeugt wird. jedoch soll jedes objekt im namen zusätzlich mit einer laufvariabel (0,1,2....x) benamst werden. da ich die eingabe in eine db schreibe, welche später wieder am "richtigen" platz stehen soll! es würde-glaub ich-mit einem array funktionieren,jedoch weiß ich die größe des arrays beim erzeugen noch nicht.
Code:
private void addInputFields(int x,int y) {
    
    int id = textFieldID;
    
    JTextField textField+id = new JTextField();  //==> nur zur Erklärung!!!
    

    textField.setPreferredSize(new Dimension(30, 21));
    jPanel.add(textField, new GridBagConstraints(x, y, 1, 1, 0.1, 0.1
                                                , GridBagConstraints.CENTER,
                                                GridBagConstraints.NONE,
                                                new Insets(5, 5, 0, 0), 0, 0));
   textFieldID++;
  }

Es soll dann ein textField1, textField2, usw. geben! Oder es würde auch nur 1, 2, usw reichen.

herzlichen dank im voraus!
 
Sozusagen "variable Variablen"!? Das wird in Java nicht klappen, aber was hältst du davon stattdessen ein TextField Array zu erstellen?
 
stimmt leider! dachte anfangs,der name wäre ein "normaler" string-dem ist leider nicht so! bzgl. array: ich weiß anfangs noch nicht wieviele TextFields ich benötige,jedoch muss die array-größe bei der erzeugung bekannt sein? gibt es da eine lösung,oder liege ich mit meiner vermutung falsch?
danke
 
... war ausgelogt! vector ist eine gut idee, hast du vielleicht bitte ein paar zeilen für mich, wie das aussehen könnt?
danke
 
Ab wann weißt du, wann wie viele Elemente du benötigst?
oder du nimmst gleich nen Vector oder ne Arraylist.
 
Nimm ArrayList.

Code:
List textList = new ArrayList();
JTextField jtf1 = new JTextField(....);
JTextField jtf2 = new JTextField(....);
//etc. pp.

textList.add(jtf1);
textList.add(jtf2);
//etc. pp.

Um später auf die einzelnen Textfields zugreifen zu können einfach die get Methode mit entsprechendem Index aufrufen.
 
ich weiß eigentlich nie,wieviele benötigt werden,da die textfelder elemente eines prüfformulars sind und jede stunde eine prüfung gemacht wird,wobei dann immer per button ein neues hinzugefügt wird! das kann über mehrere tage so gehen!
 
oder als Vector (kleines Beispiel prog :wink: )

Code:
import java.util.*;
import javax.swing.*;

public class vecTest extends JFrame{
	
	public vecTest() {
		
		Vector test = new Vector();
		for (int i = 0; i < 10; i++) {
			test.addElement(new JTextField("Hoi", 5));
		}
		getContentPane().add((JTextField)test.elementAt(0));
	}
	
	public static void main(String[] args) {
		
		vecTest t = new vecTest();
		t.setVisible(true);
	}
}
 
maxwell hat gesagt.:
ich weiß eigentlich nie,wieviele benötigt werden,da die textfelder elemente eines prüfformulars sind und jede stunde eine prüfung gemacht wird,wobei dann immer per button ein neues hinzugefügt wird! das kann über mehrere tage so gehen!
Warum verwendest Du dann keine JList / JTable??
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben