jtextfield und jtable

coke189

Mitglied
Moin Leute,
nach ewiger Suche hab ich immer noch nichts gefunden was bei mir funktioniert.
Ich hab ein paar JTextFields in der Klasse 1 und ich hab eine JTable in der Klasse 2.
Wenn ich einen JButton klicke, wird der Inhalt der JTextFields in verschiedene Variablen übergeben.
Ich möchte in Klasse 2 den Text wieder aus den Variablen holen und in die JTable eintrage...
Ich bekomms einfach nicht hin.

Wie greife ich aus Klasse 2 auf meine Variablen aus Klasse 2 zu ?

Könnt ihr mir vielleicht noch einen Tip geben wie ich das mit der übergabe in die JTable machen soll ?


mfg
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Entweder übergibst du Klasse 2 eine Instanz von Klasse 1, du übergibst eine Instanz vom JTextField oder du übergibst mit einem setter die Variablen an Klasse 2.
 

coke189

Mitglied
Meine Variablen sind nämlich in einer public class xyz dklariert, wo auch noch ne menge anderer sachen drin stehn, vielleicht mach ich ja was falsch aber ich kann dieser public class xyz nicht in klasse 2 "integrieren".
 

Gucky

Top Contributor
In Klasse2 gibt es eine Variable Klasse1 klasse1;
In einem Setter in Klasse2 steht:
Java:
public setKlasse1(Klasse1 klasse1){
   this.klasse1=klasse1;
}
Dann hätte Klasse2 über die Instanz Zugriff auf alle nicht lokalen und nicht als private oder protected gekennzeichneten Variablen Zugriff.

Die Übergabe erfolgt über klasse2.setKlasse1(this);, wenn sie aus Klasse1 aus erfolgt.

Oder mit einem setter, der die Werte übergibt. Das geht genauso. Wertesetter (meine Erfindung. Das Wort sofort vergessen :) ) sind Klassensettern (genauso) vorzuziehen. Wenn es aber eine Milliarde Werte sind, dann wäre ein Klassensetter sinnvoller.
 

coke189

Mitglied
Ich glaub ich bin zu doof dafür :(

Klasse1 heisst bei mir adressbuch3.
Klasse2 heisst adressbuchJTable.

Hier der setter den ich in adressbuchJTable(Klasse2) schreiben sollte :

Java:
public void adressbuch3(adressbuch3 Adressbuch3){
    	this.Adressbuch3 = Adressbuch3;
    }
    }

Eclipse schrieb mir dass es nur mir void gehn würde und ich musse noch das hier hinzufügen :

Java:
private PROJETadressbuch.adressbuch3 Adressbuch3;

Aber trotz allem kann ich meine variablen nicht in adressbuchJTable aufrufen.

Wenn das nicht geht hab ich keinen Plan wie ich den Text aus meine JTextFields in der Klasse adressbuch3 in die JTable in adressbuchJTable kriegen soll.... :(
 

kaoZ

Top Contributor
Wenn du auf "öffentliche" variablen der Klasse Adressbuch aus einer anderen Klasse zugreifen möchtest:
könntest du dieses z.B so machen:

Static

Code:
Adressbuch.deinVariablenName;

nicht static

Code:
new Adressbuch.deinVariablenName;

z.B wenn im konstruktor deiner anderen klasse ein String initialisiert wird

Java:
public class Foo {

	String fooString;
	
	public Foo() {
		fooString = "Haha ich bin ein FooString";
	}
}

kannst du diesen in einer anderen Klasse so ausgeben

Java:
package tests;

public class Bar {

	public Bar() {
		System.out.println(new Foo().fooString); // <<---
	}
	public static void main(String[] args) {
		new Bar();
	}
}

Ansonsten , sollten deine Variablen private sein , machst du es über öffentliche getter/setter methoden


Java:
public class Foo{

private String fooString;

//getter
public String getFooString(){
  return this.fooString;
}
//setter
public void setFooString(String fooString){
  this.fooString = fooString;
}
}

diese könntest du dann folgendermaßen aufrufen:

Java:
public class Bar{

public Bar(){

  System.out.println(new Foo().getFooString()); //<--
}

public static void main(String[]args){
  new Bar();
}

}

[EDIT]
Du könntest natürlich auch einfach eine Referenz auf ein Objekt deiner ersten Klasse in deiner Anderen Klasse Speichern, und dann auf Methoden dieser Klasse zugreifen, ein Objekt musst du eh erstellen , insofern nicht alle Methoden dieser klasse die du nutzen möchtest Statisch sind.
[/EDIT]

Java:
public class Bar{

AdressBuch address = new AdressBuch();

public Bar(){
  System.out.println(address.getFooString());
}
}
 
Zuletzt bearbeitet:

coke189

Mitglied
Danke für die Antwort, habs endlich geschafft :D hat auch wunderbar geklappt :)

Aber schon stellt sich das nexte Problem, an welches ich vorher nicht gedacht hab.

Ich hab jetzt die übergabe von den jtextfields in die jtable geschafft, aber jetzt musste ich feststellen, dass die Einträge nicht gespeichert werden. Also hab ich eben mal gegooglt, hab zwar nichts gefunden was direckt zu meinem problem passt, aber ich denke mal dass ich die Daten meiner JTabel irgendwie in eine CSV datei speichern muss oder in eine txt datei .

Was würdet ihr mir da empfehlen ?

Da ich keine Ahnung hab wie das funktioniert, muss ich sws noch etwas googlen, als bitte empfehlt mir die einfachste methode ? ^^

mfg coke

[EDIT]
Hab da noch was gefunden, was alles ändern würde glaub ich.
Anstelle meine daten in eine jtable zu schreiben , könnte man sie mit einem BufferedWriter sofort in eine .xls datei schrieben oder ?
Kann man diese .xls dabei dann beim nächsten start des programms wieder auslesen ? also dass man die daten, die drin stehn zb bearbeiten oder löschen kann ?
[/EDIT]
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Die Dateiendung ist vollkommen egal, solange du dir ein eigenes Format ausdenkst und solange der gesamte Pfad eine bestimmte länge nicht überschreitet. Wenn du einfach nur kleine Daten abspeichern willst, empfehle ich dir den BufferedWriter oder den JavaOutputStream und die jeweiligen Pendants.

Wenn du Daten speichern willst und das auch mehr werden soll, empfehle ich dir eine SQL Datenbank oder XML.
 
Zuletzt bearbeitet:

coke189

Mitglied
Danke für die sehr schnelle Antwort.

Würde der BufferedWriter die JTable ersetzen ?

Und ich nehme an mit dem BufferedReader kann ich die Daten wieder auslesen ?

mfg
 

coke189

Mitglied
Okay aber ich will die Daten nicht wirklich anzeigen.

Ich hab die Eingabefelder ( Name, Nachname, adresse usw.)

Wenn ich aus "New" klicke, dann wird der Text in diesen jtextfields auf " " gesetzt.
Dann kann ich einen neuen Kontakt eingeben.
Wenn ich jetzt auf "Save" klicke, dann solle der neue Kontakt gespeichert werden.
Ich hab ne JList die immer am Rand angezeigt wird, in der soll jetzt Nachname und Name des neues Kontakts stehen.
Wenn ich jetzt diesen Kontakt in dier JList mit der Maus markieren, sollen die Daten wieder in die JTextfields geschrieben werden, damit ich sie bearbeiten kann und dann wieder abspeichern .
Ich hab auch noch einen Button mit dem ich ganze Kontakte löschen kann .

Was ich bis jetzt habe :

Eine Oberfläsche, die so aussieht :

Bildschirmfoto%202013-12-21%20um%2012.43.21.png


Die Textfelder sind alles erstellt, der "New" Button funktioniert, und ich hab ne Jtable.

Was ich jetzt noch machen muss :

Möglichkeit finden um die daten zu Speichern und wieder abzurufen
ActionListener für die fehlenden buttons schreiben, geht aber erst wenn das speicher problem gelöst ist
Und wenn das Speicher problem gelöst ist, muss ich noch das mit der JList machen, wenn das überhaupt geht :/
 

Gucky

Top Contributor
Bitte frag nie wieder, ob etwas geht. Wenn du es dir vorstellen kannst, dann ist es auch möglich (zumindest in der Informatik)! :D

Für deinen Verwendungszweck wäre wohl XML das Beste für dich.
 

coke189

Mitglied
Okay und wie soll das bitte mit xml in java gehn ? davon hab ich noch nie was gehört :/


[EDIT]
Okay XML wäre ne Lösung, da ich aber ein Projekt in java machen muss, fällt das wohl weg :p

Mal sehn wie es jetzt weiter geht, dann irgendwie muss ich das hinbekommen
[/EDIT]
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Wieso das denn? XML ist nur eine Art Daten zu speichern, die HTML nicht unähnlich ist.
Ich glaube, da hast du was falsch verstanden. XML ist zwar die Extendet Markup Language aber dennoch ist sie nur ein Weg Daten im Klartext zu speichern. Irgendein Format müssen deine Daten haben, sonst kannst du sie nicht abspeichern und XML ist ein sehr einfaches. Es gibt sicherlich bessere aber XML ist weit verbreitet und auch sehr einfach zu verstehen.
 

coke189

Mitglied
Ok schon klar, aber ich häng gerade tooootal....komme weder vorwerts noch zurück. :/

Ich hab hier meinen getter, der mir den Inhalt aus den textfeldern in meine jtable klasse bringt :

Java:
 adressbuch3 adressbuchsNum = new adressbuch3();
 adressbuch3 adressbuchsFiernum = new adressbuch3();
 adressbuch3 adressbuchsAdress = new adressbuch3();
 adressbuch3 adressbuchsCp = new adressbuch3();
 adressbuch3 adressbuchsDuerf = new adressbuch3();
 adressbuch3 adressbuchsLand = new adressbuch3();
 adressbuch3 adressbuchsTelefon = new adressbuch3();
 adressbuch3 adressbuchsEmail = new adressbuch3();

Das sollte eigentlich funktionieren, konnte ich aber nicht testen, weil ich 2 klassen hab und ich die jtable einfach nicht geöffnet bekomme aus dem hauptfenster.

Dann hab ich in meiner jtable das hier :

Java:
  String[] columnNames = {"Num",
                                "Fiernum",
                                "Adress",
                                "Code Postal",
                                "Duerf",
                                "Land",
                                "Telefon",
                                "Email"};
 
        Object[][] data = {
        {adressbuchsNum.getsNum(),adressbuchsFiernum.getsFiernum(),
         adressbuchsAdress.getsAdress(),adressbuchsCp.getsCp(),
         adressbuchsDuerf.getsDuerf(),adressbuchsLand.getsLand(),
         adressbuchsTelefon.getsTelefon(),adressbuchsEmail.getsEmail()}
         
        };

was mir den inhalt der textfelder in die tabelle schreiben soll , wie gesagt keine ahnung obs funzt.

Und das wars, keine Ahnung wie ich weiter machen soll :/ vielleicht auch nur n schlechter tag
 

Gucky

Top Contributor
Aber die JTable brauchst du eigentlich nicht. Du dachtest nur, dass sei so leichter die Daten zu speichern, da du sie mit der JTable schon tabellarisch aufgelistet hast.
Was auch noch ginge: Du speicherst die Adressen mit dem Klick auf save in einem ContainerObjekt, welches du in einer ArrayList abspeicherst. Erst mit dem Klick auf das X oben im Fenster speicherst du mithilfe einer Schleife, die über die ArrayList iteriert, die ganzen Daten ab.

Oder du speicherst das Ganze direkt ab, was aber schwieriger wäre.
 

coke189

Mitglied
Ich hab mir mal ein wenig gedanken über eine array list gemacht.

Jetzt meine Frage, ist es möglich mit dem ActionListener, der auf dem "Save" button läuft, jedes mal wenn er gedrückt wird ein neues array oder arraylist zu erstellen ? und wenn ja, wo wird das dann "hingeschrieben ?
 

Gucky

Top Contributor
Das mit der ArryList läuft anders: Du schreibst deine Daten in ein ContainerObjekt und dieses speicherst du in der ArryList. ArrayLists in ArrayLists zu speichern macht hier eher weniger Sinn.

Wo es hingeschrieben wird: kommt drauf an, was du ihm sagst. Wenn du nur jedes Mal ein neues Array mit demselben Namen erstellst, wird das alte überschrieben und beim Verlassen der Methode sowieso gelöscht.

Deshalb müsste die ArrayList sozusagen "global" sein, indem du sie zu einem Attribut der Klasse machst, in der das Speichern abläuft. (es gäbe auch noch die ßöglichkeit mit static aber das vergessen wir mal schnell wieder).
 

coke189

Mitglied
Ich häng da jetzt schon seit gestern dran, glaubst du, du könntest mir vielleicht das mit dem container und arraylist schreiben oder ein beispiel geben ? ich hab noch nie mit sowas gearbeitet und kriegs einfach nicht hin :/ bei google find ich auch nicht wirklich was, was mit weiter hilft .
 

turtle

Top Contributor
edes mal wenn er gedrückt wird ein neues array oder arraylist zu erstellen ? und wenn ja, wo wird das dann "hingeschrieben ?

klar geht das. Der ActionListener zum Button wird aufgerufen und darin kannst du machen was du möchtest.

Die Frage "wo wird das hingeschrieben" ist nicht eindeutig. Wenn du den Quellcode meinst, habe ich das beantwortet, nämlich in den ActionListener zum Button.
Wenn du meinst, das du die Daten "irgendwo", beispielsweise als Datei auf Platte meinst, musst du das selber programmieren.

Alle Swing-Komponenten, also auch JTable halten ihre Daten in sogenannten Models. Bei einer JTable ist es ein TableModel. Dieses kannst du selbst erstellen und somit festlegen welche Daten in der Tabelle angezeigt werden sollen.
Da also du genau weißt, welche Daten im Model stehen, musst du "nur" eine kleine Methode schreiben, die das Model (die Daten) in eine Datei speichert. Genau so einfach ist dann das Laden der Daten aus der Datei und Erstellen und Füllen des TableModels.

Ich habe mal ein kleines Beispiel angehängt, das ein sehr kleines Tablemodel, bestehend nur aus einem String, zeigt und diese Daten in einer Textdatei (ausgabe.txt) speichert. Das Laden überlasse ich dir zur Übung;)
Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class SampleTable extends JPanel {
	private final JTable table;
	private final MeinModel model;

	public SampleTable() {
		model = new MeinModel(4);
		table = new JTable(model);
		add(new JScrollPane(table), BorderLayout.CENTER);
	}

	public JTable getTable() {
		return table;
	}

	public MeinModel getModel() {
		return model;
	}

	public static void main(String[] args) {
		JFrame frame = new JFrame("Table");
		frame.setLayout(new BorderLayout());
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		final SampleTable sampleTable = new SampleTable();
		frame.add(sampleTable, BorderLayout.CENTER);
		JButton btnSave = new JButton("Save");

		btnSave.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					PrintWriter bufferedWriter = new PrintWriter(new File(
							"ausgabe.txt"));
					MeinModel model = sampleTable.getModel();
					int rowCount = model.getRowCount();
					int columnCount = model.getColumnCount();
					for (int row = 0; row < rowCount; row++) {
						for (int col = 0; col < columnCount; col++) {
							Object tableCell = model.getValueAt(row, col);
							bufferedWriter.println("" + row + ":" + col + ":"
									+ tableCell);
						}
					}
					bufferedWriter.flush();
					bufferedWriter.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
		frame.add(btnSave, BorderLayout.NORTH);
		frame.pack();
		frame.setVisible(true);
	}
}

class MeinModel extends DefaultTableModel {
	public MeinModel(int anzahl) {
		columnIdentifiers = new Vector<String>();
		dataVector = new Vector<String>();
		for (int i = 0; i < anzahl; i++) {
			columnIdentifiers.add("Spalte " + i);
		}

		for (int zeile = 0; zeile < 10; zeile++) {
			Vector<String> oneRow = new Vector<String>();
			for (int i = 0; i < anzahl; i++) {
				int zelle = i + 4 * zeile;
				oneRow.add("" + zelle);
			}
			dataVector.add(oneRow);
		}
	}
}
 

coke189

Mitglied
Danke für die JTable, aber ich versteh ehrlich gesagt nicht mal die helfte von dem was da drin steht :(

Langsam bin ich soweit dass es mir egal ist, ob die daten nach dem neustart des programms noch da sind oder nicht. Sie müssen eigentlich nur solange drin bleiben wie das program läuft .

Ich wollte versuchen dass beim betätigen von meinem save button mein textfelder geleert werden und alles was drin ist, in eine array list gespeichert wird, egal ob das jetzt im actionlistener steht oder nicht, soll ja nur zu demonstration dienen ...

sorry wenn ich verzweifelt klinge, aber das bin ich so langsam :/
 

Gucky

Top Contributor
Das ContainerObjekt sieht so aus:

Java:
public class container{
   private String name;
   private String alter;

   public container(String name, String alter){
      this.name=name;
      this.alter=alter;
   }

   public void setName(String name){
      this.name=name;
   }

   public void setAlter(String alter){
      this.alter=alter;
   }

   public String getName(){
      return name;
   }

   public String getAlter(){
      return alter;
   }
}

Es heißt so, weil du dort alle Variablen reintun kannst, die du brauchst für dein Programm. Weil die ArrayList nicht einfach an deine Belange angepasst werden kann (und sollte von der API sollte man die Finger lassen), braucht man dieses ContainerObjekt für die Gruppierung deiner Daten.
 

coke189

Mitglied
Sorry aber ist mir zu hoch, ich würds gern anders machen .

Für mich würde reichen, wenn ich auf den save button klicke, dass dann eine neue zeile in meiner jTable entsteht.

Hier geb ich ja an was in die einzelnen Spalten der Tabelle geschrieben wird :

Java:
  Object[][] data = {
        {adressbuchsNum.getsNum(),adressbuchsFiernum.getsFiernum(),
         adressbuchsAdress.getsAdress(),adressbuchsCp.getsCp(),
         adressbuchsDuerf.getsDuerf(),adressbuchsLand.getsLand(),
         adressbuchsTelefon.getsTelefon(),adressbuchsEmail.getsEmail()}

Wenn du mir sagen könntest wie ich es machen muss um beim klick auf save im obigen Code einfach ne neue zeile zu bekommen, dann wär ich schon zufrieden :)
 

Gucky

Top Contributor
Mit JTables kenne ich mich nicht aus.

Ich glaube, jetzt stellst du dich ein bisschen an. Du wolltest die Daten speichern und das machen wir jetzt auch.

Mit dem Klick auf save werden die Daten aus den Textfeldern in ein ContainerObjekt, wie oben beschrieben gespeichert und dieses wird in einer ArrayList gespeichert. Der Code sähe (ohne den ActionListener) so aus.

Java:
ArrayList<Benutzercontainer> benutzerList = new ArrayList<Benutzerkonto>();
public void auslesen(){
   String name = JtxtFieldName.getText();
   //das machst du mit allen Daten in den passenden Datentypen
   Benutzercontainer benutzercontainer = new Benutzercontainer();
   benutzercontainer.setName(name);
   //das machst du mit allen Daten
   benutzer.add(benutzercontainer);//ein neuer Benutzer wurde der ArrayList hinzugefügt
}
 

coke189

Mitglied
Okay danke für das Beispiel, ich seh aber nicht wo das hinführen soll... ich hab jetzt das hier :

Java:
import java.util.ArrayList;

public class adressContainer {
	
	//getter adressbuch3 strings
	 adressbuch3 adressbuchsNum = new adressbuch3();
	 adressbuch3 adressbuchsFiernum = new adressbuch3();
	 adressbuch3 adressbuchsAdress = new adressbuch3();
	 adressbuch3 adressbuchsCp = new adressbuch3();
	 adressbuch3 adressbuchsDuerf = new adressbuch3();
	 adressbuch3 adressbuchsLand = new adressbuch3();
	 adressbuch3 adressbuchsTelefon = new adressbuch3();
	 adressbuch3 adressbuchsEmail = new adressbuch3();
	
	
	
	ArrayList<adressContainer> adresslist = new ArrayList<adressContainer>();
	public void auslesen(){
	   String num = adressbuchsNum.getsNum();
	   String fiernum = adressbuchsFiernum.getsFiernum();
	   String adress = adressbuchsAdress.getsAdress();
	   String cp = adressbuchsCp.getsCp();
	   String duerf = adressbuchsDuerf.getsDuerf();
	   String land = adressbuchsLand.getsLand();
	   String telefon = adressbuchsTelefon.getsTelefon();
	   String email = adressbuchsEmail.getsEmail();
	   
	   //das machst du mit allen Daten in den passenden Datentypen
	   adressContainer AdressContainer = new adressContainer();
	   adressContainer.setNum(num);
	   adressContainer.setFiernum(fiernum);
	   adressContainer.setAdress(adress);
	   adressContainer.setCP(cp);
	   adressContainer.setDuerf(duerf);
	   adressContainer.setLand(land);
	   adressContainer.setTelefon(telefon);
	   adressContainer.setEmail(email);
	   
	   //das machst du mit allen Daten
	  // adressbuch3.add(AdressContainer);//ein neuer Benutzer wurde der ArrayList hinzugefügt
	}
	private static void setEmail(String email) {
		// TODO Auto-generated method stub
		
	}
	private static void setTelefon(String telefon) {
		// TODO Auto-generated method stub
		
	}
	private static void setLand(String land) {
		// TODO Auto-generated method stub
		
	}
	private static void setDuerf(String duerf) {
		// TODO Auto-generated method stub
		
	}
	private static void setCP(String cp) {
		// TODO Auto-generated method stub
		
	}
	private static void setAdress(String adress) {
		// TODO Auto-generated method stub
		
	}
	private static void setFiernum(String fiernum) {
		// TODO Auto-generated method stub
		
	}
	private static void setNum(String num) {
		// TODO Auto-generated method stub
		
	}

}

[EDIT]Naja das Problem ist, ich hab eigentlich keinen Plan was ich da jetzt gemacht hab, deswegen weiss ich auch nicht wie ich weiter fahren soll/was ich in meinen actionListener schreibe :/
[/EDIT]
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Wofür hast du die ganzen Adressbücher im Container?

Du kannst dir die ContainerKlasse wirklich als Container vorstellen.
Du hast ein Schiff (ArrayList). Auf diesem Schiff willst Küchen (Adressbucheinträge) verschicken. Dieses Schiff kann aber keine Öfen (Telefonnummer), Mikrowellen (Name) etc. (der Rest) aufnehmen und da alle Öfen von einer anderen Bauart (unterschiedliche Telefonnummern) sind und zu einer bestimmten Küche gehören, kannst du nur unter erheblichem verwaltungstechnischem Aufwand die Öfen zusammen in einen Container tun. Was tust du also? Du packst jede Küche zusammen in einen Container (deine ContainerKlasse) und tust diesen auf dein Schiff. Das Schiff ist zufrieden, da es seinen Container bekommen hat und du hast alle Bestandteile einer Küche zusammen in einem Container. Jeder Container kann eine bestimmte Anzahl von Objekten aufnehmen und hat für jedes einen Platz reserviert (Variablen). Die Container selbst wissen nicht, dass es noch andere gibt. Wozu auch. Sie sind Container und somit so ziehmlich die dümmsten Klassen, die man schreiben kann. :)
Einzig das Schiff kennt alle Container und kann auf sie zugreifen.
Jetzt läuft das Schiff in einen Hafen ein und du willst die Küchen abladen (abspeichern der Daten). Das Schiff lässt dich aber nicht aufs Schiff. Du musst das Schiff dir die Container geben lassen (get(index)). Dann willst du die Öfen etc. aus den Containern nehmen. Die Container lassen dich aber auch nicht rein. Du musst den Container dir die Dinge geben lassen (getName()). Dabei wird eine Kopie des Objektes angefertigt. Das Original bleibt also unberührt. Nun kannst du den Container anweisen etwas mit den Öfen etc. zu tun (setName(String)). Du kannst auch das Schiff anweisen den Container zu löschen (remove(index)). Du kannst auch das ganze Schiff löschen ([variablenNameDerArrayList] = null).

Ich hoffe, damit konnte ich dir die Idee des ContainerObjektes ein bisschen näher bringen.
 
Zuletzt bearbeitet:

coke189

Mitglied
Was ich jetzt da in den container rein gesetzt habe ist eigentlich ein kompletter eintrag :

Java:
 adressbuch3 adressbuchsNum = new adressbuch3();
     adressbuch3 adressbuchsFiernum = new adressbuch3();
     adressbuch3 adressbuchsAdress = new adressbuch3();
     adressbuch3 adressbuchsCp = new adressbuch3();
     adressbuch3 adressbuchsDuerf = new adressbuch3();
     adressbuch3 adressbuchsLand = new adressbuch3();
     adressbuch3 adressbuchsTelefon = new adressbuch3();
     adressbuch3 adressbuchsEmail = new adressbuch3();

Getter um auf die variablen in der anderen Klasse zugreifen zu können.

Und so wie ich das verstanden hab, ist das hier der Container :
Java:
 ArrayList<adressContainer> adresslist = new ArrayList<adressContainer>();
    public void auslesen(){
       String num = adressbuchsNum.getsNum();
       String fiernum = adressbuchsFiernum.getsFiernum();
       String adress = adressbuchsAdress.getsAdress();
       String cp = adressbuchsCp.getsCp();
       String duerf = adressbuchsDuerf.getsDuerf();
       String land = adressbuchsLand.getsLand();
       String telefon = adressbuchsTelefon.getsTelefon();
       String email = adressbuchsEmail.getsEmail();
       
       //das machst du mit allen Daten in den passenden Datentypen
       adressContainer AdressContainer = new adressContainer();
       adressContainer.setNum(num);
       adressContainer.setFiernum(fiernum);
       adressContainer.setAdress(adress);
       adressContainer.setCP(cp);
       adressContainer.setDuerf(duerf);
       adressContainer.setLand(land);
       adressContainer.setTelefon(telefon);
       adressContainer.setEmail(email);

Da sollte jetzt einmal Name, Nachname, adresss, postleitzahl, telefonnummer, email und dorf drin sein .

aber wie gehts jetzt weiter ? ich frag mich ob das überhaupt richtig ist was ich da geschrieben hab, dann glaube ich, dass ich noch ne schleife oder so brauche um dem actionlistener zu sagen dass er bei betätigung einen neuen container erstellen muss oder so ...
Und ganz ehrlich , ich glaub dass ich ein wenig den überblick verloren hab :/
 

Gucky

Top Contributor
Das glaube ich auch aber das kriegen wir schon wieder hin :)

Also. Lösche noch mal deinen Container und bau' ihn neu auf. Und zwar so, wie ich es dir in meinem Beispiel geschildert habe. Wenn du deine Klasse versuchst anzupassen und dann auch noch zu verstehen, was du da gemacht hast, dann kommt nur komplizierter Müll raus. Da sprech' ich aus Erfahrung :D

Das Konzept eines ContainerObjektes ist eigentlich ganz leicht. Ich denke, du hast nur irgendwo eine Blockade, die wir noch durchbrechen müssen.
 
Zuletzt bearbeitet:

coke189

Mitglied
Okay also muss eine containerKlasse für jede gruppe machen ?
ContainerName...
ContainerNachname...
usw ?

Naja ich muss das Teil am 24 zur Bewertung abgeben, mal schaun ob ich bis dahin fertig geworden bin :D
 

Gucky

Top Contributor
Ließ dir noch mal ganz aufmerksam mein Beispiel durch. Dann wirst du selber erkennen, ob das richtig ist, was du gesagt hast. :)
 

coke189

Mitglied
Okay also ich hab mir die letzten einträge nochmal angesehn und ich sag dir mal wie ich es jetzt verstanden hab.

Jede Küche (Ganzer adressbucheintrag) kommt in einen Container. Dieser Container kommt wieder in die ArrayList.

Aber das ist doch das was ich gemacht hab, deswegen versteh ich gerade nicht was ich falsch gemacht haben soll :/

Ich denke dass ich irgendwie ne Klasse ArrayList(Schiff) haben muss und um die Container in diese ArrayList zu bekommen, denke ich, muss ich in den actionListener den code schreiben um einen neuen Container zu erstellen .

Jetzt bin ich aber mal gespannt ob ich das richtig verstanden hab :p

mfg
 

Gucky

Top Contributor
Die Klasse ArrayList brauchst du nicht. Du machst nur eine neue Instanz von einer und tust diese in eine Klasse, auf die der ActionListener zugreifen kann (zum Beispiel die GUI Klasse).

Ich habe deinen Codeschnipsel so verstanden, dass du in deinem Container noch einen Container hast, den du befüllst. Das würde aber, so wie du es hast, eine Endlosschleife und einen StackOverflow hervorrufen.

Und die ArrayList kommt nicht in die Container, da die nicht wissen müssen, dass es noch andere Container gibt und wie willst du ein Containerschiff aus einem Container verwalten? :D
 

coke189

Mitglied
Sorry das ist mir zu hoch, da komm ich einfach nicht mit :D also ich hab bis jetzt fast alles verstanden, aber mit dem ganzen Speicher vorgang komm ich nicht klar :/
ich hab überhaupt kleinen plan was ich damit machen soll xD sorry
 

Gucky

Top Contributor
Du hast einen Container, der VON AUSSEN verwaltet wird. Du hast in der GUI Klasse eine ArrayList, in der die ganzen Container sind. Nicht im Container. In dem sind nur die Daten. Mehr nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4
G Aus JTextField auslesen und in JTable speichern - aber wie? Java Basics - Anfänger-Themen 2
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
S Möglichkeit, mit g.draw etwas vor ein JTextfield zu „zeichnen“? Java Basics - Anfänger-Themen 7
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
B Variablen Int Variabel in JTextField ändern Java Basics - Anfänger-Themen 2
mhmt_03 dafür sorgen, dass im JTextfield nur zahlen eingebbar sind Java Basics - Anfänger-Themen 9
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E JButton und JTextField Java Basics - Anfänger-Themen 1
J JTextField Bezeichnung als Variable Java Basics - Anfänger-Themen 3
M Von einem JTextField Doublewerte entgegennehmen Java Basics - Anfänger-Themen 2
M JTextField in ArrayList speichern Java Basics - Anfänger-Themen 4
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
G JTextField per Button speichern und an andere Klasse übergeben Java Basics - Anfänger-Themen 2
D Klassen JTextField wird nur zu 50% angezeigt. Java Basics - Anfänger-Themen 15
F JTextField Kursiv und Fett machen Java Basics - Anfänger-Themen 4
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
CptK Interface JTextField: Action mit Enter ausführen Java Basics - Anfänger-Themen 16
K Methoden JTExtField mit Array erzeugen Java Basics - Anfänger-Themen 13
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
J Erste Schritte Wert aus JTextField zurückgeben Java Basics - Anfänger-Themen 6
F Aus einer anderen Klasse auf ein JTextField zugreifen Java Basics - Anfänger-Themen 17
P Cursor in JTextField setzen Java Basics - Anfänger-Themen 11
F Variablen JTextField-Inhalt kann nicht mit String abgeglichen werden Java Basics - Anfänger-Themen 2
F Interface JTextField am Anfang unsichtbar o_o Java Basics - Anfänger-Themen 3
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
B Interface JTextField Eingabe als String verwenden Java Basics - Anfänger-Themen 3
K OOP Mit anderer Klasse auf JTextField zugreifen Java Basics - Anfänger-Themen 5
Liondary JTextfield Java Basics - Anfänger-Themen 8
W JTextField-Objekt liest Umlaute mit falschen Zeichen ein Java Basics - Anfänger-Themen 5
Z Fürge nur ein JTextField ein und danach wird nichts mehr angezeigt Java Basics - Anfänger-Themen 3
S JTextField zu ArrayList hinzufügen Java Basics - Anfänger-Themen 3
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
Z JTextField - getText() Methode abbrechen? Java Basics - Anfänger-Themen 8
P jTextField - Auslesen, in Variablen speichern, eingeben... Java Basics - Anfänger-Themen 7
J Methoden JTextArea auslesen und in JTextfield ausgeben Java Basics - Anfänger-Themen 13
M Double-Ausgabe in JTextField fehlerhaft Java Basics - Anfänger-Themen 2
U Inhalt von JTextfield an andere Klasse weitergeben Java Basics - Anfänger-Themen 13
I JTextfield[] innerhalb eines Itemlistener aufrufen Java Basics - Anfänger-Themen 2
S Einzelne Buchstaben aus Jtextfield in array Java Basics - Anfänger-Themen 2
S Verhalten von JTextField in einem JTabbedPane (Register) Java Basics - Anfänger-Themen 6
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
G JTextField, DocumentListener, Fehler bei setText() Java Basics - Anfänger-Themen 3
S Input/Output GUI Eingabe in JTextfield in Variable speichern Java Basics - Anfänger-Themen 7
C JTextField füllen Java Basics - Anfänger-Themen 5
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
K Encoding von JTextfield Java Basics - Anfänger-Themen 2
P Klassen JTextfield aus anderer Klasse herausfüllen Java Basics - Anfänger-Themen 12
K JTextField auslesen, in int umwandeln und in einer anderen Klasse als Zähler verwenden Java Basics - Anfänger-Themen 3
M Datumsformat in JTextfield Java Basics - Anfänger-Themen 10
S JTextField nervt rum... Java Basics - Anfänger-Themen 4
B JTextField Java Basics - Anfänger-Themen 5
D Durch Button klick wert in JTextField einfügen Java Basics - Anfänger-Themen 5
J Verknüpfung von JButton to JTextField Java Basics - Anfänger-Themen 4
B JTextField Java Basics - Anfänger-Themen 5
C Problem mit JTextField Java Basics - Anfänger-Themen 8
A Klassen JTextField eigtl leer aber es werden Methoden ect. angezeigt Java Basics - Anfänger-Themen 9
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
L JTextField auslesen mit getText() wie abspeichern? Java Basics - Anfänger-Themen 2
D jtextField Ausgabe double Java Basics - Anfänger-Themen 4
D JTextField verwenden ohne Eingabe einer Variable Java Basics - Anfänger-Themen 4
J GUI - JTextField Anordnung Java Basics - Anfänger-Themen 2
S nur Buchstaben in JTextField Java Basics - Anfänger-Themen 3
S JTextfield Auswertung mit FocusListener Java Basics - Anfänger-Themen 7
M Hilfe JTextfield Ergebnis Java Basics - Anfänger-Themen 2
B GUI- JTextField - Übung Java Basics - Anfänger-Themen 5
M OOP Wie greife ich auf JTextField zu? Java Basics - Anfänger-Themen 2
P Eingabe aus JTextField/Area an eine andere Klasse übergeben. Java Basics - Anfänger-Themen 2
M Input/Output JFrame mit JButton und JTextfield Java Basics - Anfänger-Themen 114
F GUI JTextField aktualisieren Java Basics - Anfänger-Themen 3
B jTextField bei Enter eingabe absenden? Java Basics - Anfänger-Themen 2
S JTextField leeren ohne setText("")? Java Basics - Anfänger-Themen 3
A fire button on JTextField Enter Java Basics - Anfänger-Themen 2
G JTextField() Anzeige - if-Anweisungen Java Basics - Anfänger-Themen 2
R Erste Schritte codecopieren von Editor nach Eclipse / JTextField Java Basics - Anfänger-Themen 4
L Zeichen in jTextField markieren Java Basics - Anfänger-Themen 2
M Text auf JTextField auslesen per Button Java Basics - Anfänger-Themen 4
L JTextField getText() gibt immer null zurück Java Basics - Anfänger-Themen 10
L Null Pointer Exception bei Focus Event bei einem JTextField Java Basics - Anfänger-Themen 2
C Ausgewähltes Element einer JCombobox in JTextField Java Basics - Anfänger-Themen 3
H Prüfen welches JTextfield ausgewählt/selektiert ist? Java Basics - Anfänger-Themen 7
B Input/Output jTextField - KeyEvent - Zeichen soll nicht erscheinen Java Basics - Anfänger-Themen 6
D JPasswordField - JTextField Java Basics - Anfänger-Themen 5
J JTextfield mit Enter leeren Java Basics - Anfänger-Themen 3
H JtextField auslesen und in JLable einfuegen Java Basics - Anfänger-Themen 7
D JTextField anstatt Jbuttons Java Basics - Anfänger-Themen 9
V Sonderzeichen als eigene "Operatoren" im JTextField Java Basics - Anfänger-Themen 4
S mit eigener Klasse JTextField ändern Java Basics - Anfänger-Themen 3
M JTextField durch Button auslösen Java Basics - Anfänger-Themen 9
J JLabel mit Hilfe von JTextfield benennen Java Basics - Anfänger-Themen 7
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
M JTextField Java Basics - Anfänger-Themen 7
O JTextField Schriftgröße ändern Java Basics - Anfänger-Themen 1
J Nur ein Komma in JTextField zulassen... Java Basics - Anfänger-Themen 9
C Problem mit JPopupMenu, JTextField und Keylistener Java Basics - Anfänger-Themen 2
S JTextField an SQL mit -> Kommazahlen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben