# JTable stellt DB da



## derRote (24. Apr 2012)

Hallo Welt,

1.: meine Datenbank funktioniert :toll:
[Wahnsinn ]

2.: Stoße schonwieder an Grenzen meiner Fähigkeit -.-

Der Plan ist, die Acces Datenbank in einem JTable darzustellen.
Nun ist mein Problem, dass ich es nicht schaffe, die Tabelle so aussehen zu lassen, wie die Datenbank.

Habe mich hier im Forum umgesehen und sogar diseses Tutorial (eigentlich echt super) gegeben.
<http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/4841-jtable-ubersicht-teil-1-teil-8-a.html>
und das da (How to Use Tables (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)) gegeben. 
Erfolglos -.-

Also nochmal die Frage:
wie schaffe ich es, eine JTable dazu zu bringen, meine Acces Datenbank (meiner Meinung nach, immernoch nur ein Tabell ) darzustellen?

lg derRote

PS: nach dem langen Text, gibts erstmal ne Maus :lol: Maus vs Rad - YouTube


----------



## Marcinek (25. Apr 2012)

Ich sehe hier ein 1000 Posting thread auf uns zukommen  

Das Forum hier kann dir nicht abnehmen die basics zu lernen. Du hast schon den korrekten Link gepostet. Zu sagen geht nicht , verstehe ich nicht, kann ich nicht zeigt dass du einfach kein Bock hast das zu lernen..

Bitte schaue dir den Link genau an. Wenn du dazu eine konkrete frage hast Post sie hier.

Beachte jedoch, das die meisten Programme dieser Welt datenbankinhalte in Tabellen visualisieren. Daher wirst du nicht drumherum kommen mal in Google oder in ein Buch zu schauen.


----------



## ARadauer (25. Apr 2012)

Es kommt irgendwie drauf an was du genau mit den Daten vor hast.
Soll es sehr flexibel sein würd ich ein Object[][] laden und es mit einem eigenen TableModel das du vom AbstractTableModel erbst darstellen.

Anderseites, falls du da viel Fachlichkeit ins Model rein bringen willst würd ich natürlich ein Objekt machen, dass eine Zeile darstellt, diese Laden und diese im Model verwalten... das funktioniert natürlich nicht, wenn du jede x beliebige Tabelle darstellen willst...


----------



## derRote (25. Apr 2012)

Hey Leute....

also, dass ich kein bock hab is echt Quatsch. Mir liegt sehr viel daran, dass ich selbst auch etwas dazu lerne.

Ich hab mir das gepostete Tutorial auch durchgeschaut, bin aber der Meinung, dass das nicht auf mein Ziel hinausläuft.

Seid ihr der Meinung, dass das ausschließlich mit Array funktioniert??

Danke :applaus:


----------



## ARadauer (25. Apr 2012)

nein gibt viele lösungsmöglichkeiten...


----------



## derRote (25. Apr 2012)

okay...des wär super wenn du mir ein paar nennen könntest.

Ich hab nämlich schon das ganze Inet durchsucht und finde leider nichts sinnvolles.

Vllt würde es mir leichter fallen, wenn ich einen Anhaltspunkt hätte.

Nochmals danke


----------



## Camino (25. Apr 2012)

Das steht doch in dem von dir genannten Tutorial zu den JTables und auch ARadauer hat dir eine Möglichkeit genannt.

Am besten du schreibst dir eine Klasse, welche einen Datensatz der Tabelle darstellt. Dann liest du die gewünschten Datensätze aus der Datenbank, erstellst von jedem ein Objekt, welches du dann z.B. in einer ArrayList sammelst. Diese Liste wird dann über ein eigenes TableModel in die JTable gebracht.


----------



## derRote (25. Apr 2012)

wie gesagt....ich dachte die Möglichkeiten in dem Tutorial entsprechen nicht dem was ich erreichen möchte.

Aber so wie ihr sagt ja, dann werde ich mir da mal was raussuchen.

danke für eure Hilfe


----------



## Camino (25. Apr 2012)

Hab mein Posting noch ergänzt. Vielleicht kannst du ja mal sagen oder zeigen, wie deine Datensätze in der DB-Tabelle aussehen, also welche Felder sie haben. Dementsprechend schreibst du dir dann erstmal eine Klasse mit genau diesen Feldern (welche du in der Tabelle anzeigen möchstest) und mit getter- und setter-Methoden zum Auslesen und Schreiben in diese Objekte.


----------



## derRote (25. Apr 2012)

also eine Klasse mit den Attributen die die Spaltenüberschrift sein sollen hab ich schon.

Mir fehlt eigentlich nur noch der Code zur Programmierung einer JTable bzw. evtl auch JScrollPane.

Wär super wenn du mir da nochmal weiterhelfen könntest.

Aber dein Post war echt schon mal supii....danke

Des hier ist meine Klasse mit den JScrollPane im Moment noch. Ich würde mich aber auch mit einem JTable zufrieden geben. Die ganzen Attribute befinden sich schon in einer anderen Klasse.


```
package paketMeinKochbuch;

import java.awt.Frame;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import java.sql.ResultSet;

import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JTable;
import javax.swing.JList;
import javax.swing.JScrollPane;

public class SpeisenListe extends Frame {

	private static final long serialVersionUID = 1L;
	private JLabel jlGerichteauswahl = null;
	private JButton btStartseite = null;
	private JButton btEnde = null;
	private JScrollPane jScrollPane = null;
	private JTable jTable = null;
	/**
	 * This is the default constructor
	 */
	public SpeisenListe() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		jlGerichteauswahl = new JLabel();
		jlGerichteauswahl.setBounds(new Rectangle(197, 36, 100, 35));
		jlGerichteauswahl.setText("Gerichteauswahl");
		this.setLayout(null);
		this.setSize(534, 312);
		this.setTitle("SpeisenListe");

		this.add(jlGerichteauswahl, null);
		this.add(getBtStartseite(), null);
		this.add(getBtEnde(), null);
		this.add(getJScrollPane(), null);
		this.add(jlGerichteauswahl, null);
	}

	/**
	 * This method initializes btStartseite	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtStartseite() {
		if (btStartseite == null) {
			btStartseite = new JButton();
			btStartseite.setBounds(new Rectangle(35, 239, 170, 50));
			btStartseite.setText("Startseite");
			btStartseite.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); 
					
					Startseite s = new Startseite();
					s.setVisible(true);	
					s.setLocation(400, 300);
					dispose();
					// TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return btStartseite;
	}

	/**
	 * This method initializes btEnde	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtEnde() {
		if (btEnde == null) {
			btEnde = new JButton();
			btEnde.setBounds(new Rectangle(303, 238, 171, 51));
			btEnde.setText("Ende");
			btEnde.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); 
					
					System.exit(0);
					dispose();
					
					// TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return btEnde;
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setBounds(new Rectangle(24, 72, 485, 144));
			jScrollPane.setViewportView(getJTable());
		}
		return jScrollPane;
	}

	/**
	 * This method initializes jTable	
	 * 	
	 * @return javax.swing.JTable	
	 */
	private JTable getJTable() {
		if (jTable == null) {
			jTable = new JTable();
			
			
			
			
		}
		return jTable;
	}

}
```


----------



## Camino (25. Apr 2012)

Du solltest dir hier bei didesem Tutorial
http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/7035-jtable-teil-2-kommen-daten-tabelle.html
mal die 4. Möglichkeit (mit dem eigenen TableModel) anschauen. So trennst du dann die View (Tabelle) von den Daten (Model).

Du erstellst dir einfach eine eigene Klasse (abgeleitet von AbstractTableModel). Dort holst du dir deine Datensätze aus der DB, erstellst davon Objekte und sammelst diese Objekte z.B. in einer ArrayList. In deinem TableModel hast du dann Methoden, um die Tabelle mit diesen Daten zu füllen.

Dann erstellst du (dort, wo du die Tabelle haben möchtest) zuerst ein Objekt des Models, welches dann dem Konstruktor der Tabelle übergeben wird.

Ganz grob etwa so:

```
MyTableModel myTableModel = new MyTableModel();
JTable myTable = new JTable(myTableModel);
```


----------



## derRote (25. Apr 2012)

vielen Dank für deine Anleitung!!

Leider hab ich Java nur in der Schule gelernt und kann deshalb nicht so leicht mit den ganzen Sachen umgehen....

Hättest du mir vielleicht einen Code als Grundgerüst?

Dein Link ist auch super....hab ich mir schon mehrmals durchgelesen....des Problem ist nur, dass wenn ich den Code copy und paste einfüge werden mir etliche Fehler angezeigt und ich weiß leider nicht genau wie ich alles verändern muss....

ich wär dir sehr dankbar wenn du mir helfen könntest....

DANKE......DANKE


----------



## Marcinek (25. Apr 2012)

Dann mach doch was einfacheres?

Dasist eindeutig über deinen Kentnissen.


----------



## Camino (25. Apr 2012)

Oder fang doch erst mal langsam Schritt für Schritt an. Dann lernst du das besser, als wenn dir das jetzt jemand hier fertig vorsetzt. Ein klein bisschen Eigeninitiative ist schon nötig, und wenn du dann hier deinen Code zeigst und sagst, wo genau du noch Probleme hast, hilft dir bestimmt auch jemand weiter. Am Anfang sieht das mit der Tabelle und dem TableModel vielleicht noch etwas kompliziert aus, aber wenn man das dann mal selbst erstellt und das Prinzip verstanden hat, ist es garnicht mehr so schwierig.

Mach doch einfach erst mal ein TableModel (eigene Klasse) in der du Daten fest reinschreibst. Dann kannst du die Daten ändern und schauen, was passiert. Später kannst du das dann mit den Daten aus der Datenbank versuchen. Immer Schritt für Schritt. Dieses TableModel übergibst du dann als Referenz dem Konstruktor der Tabelle. In deinem TableModel hast du sowohl die Daten als auch Methoden um die Daten in die Tabelle zu bekommen. Wenn du z.B. mit Eclipse arbeitest und eine neue Klasse anlegst, die von AbstractTableModel abgeleitet ist, dann wirst du automatisch darauf hingewiesen, dass dort noch Methoden fehlen, welche dir dann mit einem Mausklick auch noch automatisch angelegt werden.


----------



## derRote (25. Apr 2012)

sry wir müssen des leider als Projekt von der Schule aus machen mit Sachen, die wir noch nciht gelernt haben....

Java kann ich ansonsten eigentlich schon gut!

Inzwischen hab ich die Spaltenüberschriften hinbekommen und weiß auch wie man die Daten von Hand in die einzelnen Zeilen einfügt. Nur der Befehll damit die Daten aus der Datenbank geholt werden kenne ich nicht und ich komme einfach nicht drauf.

Natürlich möchte ich schauen so viel wie möglich selbst zu lernen, leider muss ich am Montag alles abgeben, also bleibt nicht mehr viel Zeit.

Und ich habe schon viel versucht es selbst zu schaffen.

Hier mein geänderter Code den ich bis jetzt habe:


```
package paketMeinKochbuch;

import java.awt.Frame;

import javax.swing.table.JTableHeader;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableColumn;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import java.sql.ResultSet;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JTable;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.JTextField;
public class SpeisenListe extends Frame {

	private static final long serialVersionUID = 1L;
	private JLabel jlGerichteauswahl = null;
	private JButton btStartseite = null;
	private JButton btEnde = null;
	private JScrollPane jScrollPane = null;
	private JTable jTable = null;
	Speise objArtikel=new Speise();  //  @jve:decl-index=0:
	
	/**
	 * This is the default constructor
	 */
	public SpeisenListe() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		jlGerichteauswahl = new JLabel();
		jlGerichteauswahl.setBounds(new Rectangle(202, 18, 100, 35));
		jlGerichteauswahl.setText("Gerichteauswahl");
		this.setLayout(null);
		this.setSize(534, 312);
		this.setTitle("SpeisenListe");

		this.add(jlGerichteauswahl, null);
		this.add(getBtStartseite(), null);
		this.add(getBtEnde(), null);
		this.add(getJScrollPane(), null);
		this.add(getJButton(), null);
		this.add(jlGerichteauswahl, null);
	}

	/**
	 * This method initializes btStartseite	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtStartseite() {
		if (btStartseite == null) {
			btStartseite = new JButton();
			btStartseite.setBounds(new Rectangle(35, 239, 170, 50));
			btStartseite.setText("Startseite");
			btStartseite.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); 
					
					Startseite s = new Startseite();
					s.setVisible(true);	
					s.setLocation(400, 300);
					dispose();
					// TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return btStartseite;
	}

	/**
	 * This method initializes btEnde	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtEnde() {
		if (btEnde == null) {
			btEnde = new JButton();
			btEnde.setBounds(new Rectangle(303, 238, 171, 51));
			btEnde.setText("Ende");
			btEnde.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); 
					
					System.exit(0);
					dispose();
					
					// TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return btEnde;
	}

	
	
	private String[][]daten={};
	private String[] spaltennamen = {"Rezeptnummer", "Name", "Zutaten", "Preis", "Schwierigkeitsgrad", "Gang", "Rezept"};
	private DefaultTableModel myModel = new DefaultTableModel(daten, spaltennamen);
	private JButton jButton = null;
	
	
	
	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setBounds(new Rectangle(50, 78, 410, 130));
			jScrollPane.setViewportView(getJTable());
		}
		return jScrollPane;
	}

	/**
	 * This method initializes jTable	
	 * 	
	 * @return javax.swing.JTable	
	 */
	private JTable getJTable() {
		if (jTable == null) {
			jTable = new JTable(myModel);
		}
		return jTable;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setBounds(new Rectangle(352, 46, 103, 16));
			jButton.setText("einfügen");
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); 
					
					String[] neueZeile={};
					
					myModel.addRow(neueZeile);
					
					
					// TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return jButton;
	}

}
```


----------



## Marcinek (25. Apr 2012)

ja und nun schau dir im Tutorial an, wie man da Zeilen added.


----------



## derRote (25. Apr 2012)

Tutorial Möglichkeit 4 oder wie?

was genau aus diesem Tutorial?

warum kann niemand einen funktionierenden Code posten?


----------



## Marcinek (25. Apr 2012)

derRote hat gesagt.:


> Tutorial Möglichkeit 4 oder wie?



Ja würde ich nehmen. Von deinem Code her würde ich 1 ins Aufge fassen.



derRote hat gesagt.:


> was genau aus diesem Tutorial?



Wie meinst du das? Soll man dir die Zeilen rauskopieren? 5. Klasse oder wie? ^^



derRote hat gesagt.:


> warum kann niemand einen funktionierenden Code posten?



Wir machen keine Hausaufgaben.


----------



## derRote (26. Apr 2012)

Hey Leute....danke für eure Beiträge.

Hab mir überlegt die Datenbank wegzulassen und den Inhalt von Hand einzugeben.
Ich möchte, dass wenn der ganze Inhalt eingegeben ist, dass dann die Tabelle gefüllt ist. Also wenn ich den Button einfügen drücke soll alles drin stehn. 

Das Problem ist nur, dass ich den Fehler nicht finde warum nur Zweile 1 gefüllt wird und die anderen Zeilen nicht:

```
package paketMeinKochbuch;

import java.awt.Frame;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.SQLException;
import javax.swing.table.JTableHeader;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableColumn;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import java.sql.ResultSet;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JTable;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.JTextField;
public class SpeisenListe extends Frame {

	private static final long serialVersionUID = 1L;
	private JLabel jlGerichteauswahl = null;
	private JButton btStartseite = null;
	private JButton btEnde = null;
	private JScrollPane jScrollPane = null;
	private JTable jTable = null;
	Speise objArtikel=new Speise();  //  @jve:decl-index=0:
	
	/**
	 * This is the default constructor
	 */
	public SpeisenListe() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		jlGerichteauswahl = new JLabel();
		jlGerichteauswahl.setBounds(new Rectangle(196, 25, 100, 35));
		jlGerichteauswahl.setText("Gerichteauswahl");
		this.setLayout(null);
		this.setSize(534, 312);
		this.setTitle("SpeisenListe");

		this.add(jlGerichteauswahl, null);
		this.add(getBtStartseite(), null);
		this.add(getBtEnde(), null);
		this.add(getJScrollPane(), null);
		this.add(getJButton(), null);
		this.add(jlGerichteauswahl, null);
	}

	/**
	 * This method initializes btStartseite	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtStartseite() {
		if (btStartseite == null) {
			btStartseite = new JButton();
			btStartseite.setBounds(new Rectangle(35, 239, 170, 50));
			btStartseite.setText("Startseite");
			btStartseite.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); 
					
					Startseite s = new Startseite();
					s.setVisible(true);	
					s.setLocation(400, 300);
					dispose();
					// TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return btStartseite;
	}

	/**
	 * This method initializes btEnde	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtEnde() {
		if (btEnde == null) {
			btEnde = new JButton();
			btEnde.setBounds(new Rectangle(303, 238, 171, 51));
			btEnde.setText("Ende");
			btEnde.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); 
					
					System.exit(0);
					dispose();
					
					// TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return btEnde;
	}

	
	
	
	//Methode für die Tabelle
	
	private String[][]daten={};
	private String[] spaltennamen = {"Rezeptnummer", "Name", "Zutaten", "Preis", "Schwierigkeitsgrad", "Gang", "Rezept"};
	private DefaultTableModel myModel = new DefaultTableModel(daten, spaltennamen);
	private JButton jButton = null;
	
	
	
	
	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setBounds(new Rectangle(15, 65, 488, 162));
			jScrollPane.setViewportView(getJTable());
		}
		return jScrollPane;
	}

	/**
	 * This method initializes jTable	
	 * 	
	 * @return javax.swing.JTable	
	 */
	private JTable getJTable() {
		if (jTable == null) {
			jTable = new JTable(myModel);
			
			
			
		}
		return jTable;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setBounds(new Rectangle(366, 35, 103, 16));
			jButton.setText("einfügen");
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed()"); 
					
					 String[][] neueZeile = { { "Japan", "245" }, 
							 { "1", "Tier" }, 
							 { "2", "Zahl" },       
							 { "3", "Pc" }, 
							 {"4", "Handy"} ,
							 { "5", "Haus" },       
					 };
					myModel.addRow(neueZeile);
					
				}
								
					}
					
					// TODO Auto-generated Event stub actionPerformed()
				
			);}
		
		return jButton;
	}
		

}
```

Gibt es für eine Tabelle auch eine Art Zeilenumbruch oder wie muss ich progammieren damit die Wörter den Zeilen bzw Spalten zugeordnet werden?

Danke euch allen im Voraus!!!


----------



## derRote (26. Apr 2012)

HAB INZWISCHEN MEIN PROBLEM GELÖST!!!!!!!!!!!!!!!!!!!!:toll:


----------



## Marcinek (26. Apr 2012)

1. Endlich fängst Du an das korrekt anzugehen. Erstmal DB weglassen ;D

2. Super ist, wenn man seine Lösungen hier postet für die Nachwelt.


----------



## derRote (29. Apr 2012)

hab festgestellt, dass das nur mit Vererbung möglich ist

Java Eclipse ist leider zu doof 2 Sachen geichzeitig zu vererben

da schon das Frame eine Vererbung darstellt, ist mein Vorhaben also nicht möglich:lol:


----------



## Marcinek (29. Apr 2012)

Demnach kann man mit Java also keine Daten aus der Datenbank in einem JFrame darstellen.

Das ist wirklich schade.

Wahrscheinlicher ist aber, dass du etwas ganz dolle Durcheinander bringst.


----------



## ARadauer (30. Apr 2012)

derRote hat gesagt.:


> Java Eclipse ist leider zu doof 2 Sachen geichzeitig zu vererben



Ich würd als Anfänger das Problem mal bei mir selber suche, bevor ich eine Sprache wie Java beleidige ;-)

ich hoffe doch das du nicht versuchst dein TableModel im Frame abzubilden...


----------



## derRote (1. Mai 2012)

sry ... ich hab hier ja wirklich viel gefragt, aber doof bin ich auch nicht.

hab das im Internet nachgelesen und ein Fachmann hat mir dies zusätzlich bestätigt.

also dann weiß ich auch nicht.

vielleicht mal mit euren tollen sprüchen ein bisschen langsam machen


----------

