# Doppelte Einträge in JTable



## MichaFL123 (15. Feb 2011)

Hallo,

ich hab ein Problem mit dem Befüllen eines JTable.
In meinem Programm gibt es einen FileParser der txt-Dateien ausließt und verarbeitet und diese in Form einer ArrayList an das TableModel übergibt:

Hierbei bekomme 2 Fehler:

1. Die Daten werden nur nach einem Klick auf eine HeaderSpalte (sortieren) angezeigt und nicht direkt nach dem einlesen. (dieser Fehler ist nicht so dramatisch)

2. Es werden wenn man mehrere txt-Dateien einließt in der JTable bereits vorhandene Einträge kopiert und nochmals an die Tabelle angehägt. (sehr dramatischer Fehler :shock


```
package testing2;

import java.io.*;
import java.text.BreakIterator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public abstract class FileParser {

	// Datendeklaration Speichervariablen
	private static String tmp_msg_sender; // Nachrichtensender
	private static String tmp_msg_receiver; // Nachrichtenempfänger
	private static String tmp_zp_bez; // Zählpunkt-Bezeichnung
	private static String tmp_zp_dat; // Zählpunkt-Datum
	private static String tmp_zp_zlger; // Zählpunkt-Zählgerät
	private static String tmp_zp_obisk;	//Obis-Kanal
	private static String tmp_zp_obisn; //Obis-Nr
	private static String tmp_zp_obis; // Gesammte OBIS-Kenennung
	private static String tmp_zp_qual; // Zählpunkt-Qualifyer
	private static String tmp_zp_zlstand; // Zählpunkt-Zählerstand
	private static String tmp_zp_zlgr; // Zählpunkt-Ablesegrund
	private static String tmp_zp_status; // Zählpunkt-Status
	private static String tmp_zp_wandfak; // Zählpunkt-Wandlerfaktor
	private static ArrayList<Zaehlpunkt> tmp_zlpnkt = new ArrayList<Zaehlpunkt>();

	private static int hcounter; // Hilfsvariable fürs Zählen!
	// private static String file; //Pfad/Dateiname

	
	private Zaehlpunkt temp_zlpnkt;

	// Übergabe der Files
	public static void start(String file) throws IOException {

		String filename = file;
		// Setzen Zählervariable auf 0
		hcounter = 0;
		BufferedReader reader = new BufferedReader(new FileReader(filename));

		String line;
		// Zeilenweises einlesen
		while ((line = reader.readLine()) != null) {
			// Zerlegen in Segemente bei Trennzeichen "'".
			String[] result = line.split("'");
			// Durchlaufen der Segmente
			for (int x = 0; x < result.length; x++) {
				// System.out.print(x + " ");
				// System.out.println(result[x]);

				// Beginn Verarbeitung

				// Auslesen Sender
				if (result[x].startsWith("NAD+MS")) {
					Pattern patternMn = Pattern.compile("\\+(\\d+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Nachrichten-Sender");
						System.out.println(matcherMn.group(1));
						tmp_msg_sender = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Sender
				if (result[x].startsWith("NAD+MR")) {
					Pattern patternMn = Pattern.compile("\\+(\\d+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Nachrichten-Empfänger");
						System.out.println(matcherMn.group(1));
						tmp_msg_receiver = matcherMn.group(1);
						continue;
					}
				}
				// Beginn Mscons-Zählpunkte
				if (result[x].startsWith("NAD+DP")) {
					hcounter++;
					continue;
				}

				// Auslesen Zählpunkt
				if (result[x].startsWith("LOC+172")) {
					Pattern patternMn = Pattern.compile("\\+(\\w+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zählpunkt");
						System.out.println(matcherMn.group(1));
						tmp_zp_bez = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Zählgerät
				if (result[x].startsWith("RFF+MG")) {
					Pattern patternMn = Pattern.compile("\\:(\\w+)");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zählgerät");
						System.out.println(matcherMn.group(1));
						tmp_zp_zlger = matcherMn.group(1);
						continue;
					}
				}

				// Auslesen Datum
				if (result[x].startsWith("DTM+9")) {
					Pattern patternMn = Pattern.compile("\\:+(\\w+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zähler-Datum");
						System.out.println(matcherMn.group(1));
						tmp_zp_dat = matcherMn.group(1);
						continue;
					}
				}
				//Auslesen Obis-Kanal
				if (result[x].startsWith("PIA+5")) {
					Pattern patternMn = Pattern.compile("\\+(\\p{Graph}+)\\?");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Obis-Kanal");
						String[] temp = matcherMn.group(1).split("\\+");
						tmp_zp_obisk = temp[1];
						System.out.println(tmp_zp_obisk);
						
					}
				}
				//Auslesen Obis-Nummer
				if (result[x].startsWith("PIA+5")) {
					Pattern patternMn = Pattern.compile("\\:+(\\p{Graph}+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Obis-Nummer");
						//Weitere Aufteilung
						String[] temp = matcherMn.group(1).split(":");
						String tmp1_zp_obisn = temp[0];
						//Ersetzten .8. durch .80.
						tmp_zp_obisn = tmp1_zp_obisn.replace(".8.", ".80.");
						System.out.println(tmp_zp_obisn);
						tmp_zp_obis = tmp_zp_obisk + ":" + tmp_zp_obisn;
						System.out.println("Zusammengesetzte OBIS");
						System.out.println(tmp_zp_obis);
						continue;
					}
					
				}
				// Auslesen Qualifyer-Nr
				if (result[x].startsWith("QTY+")) {
					Pattern patternMn = Pattern.compile("\\++(\\w+):+");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Qualifyer-Nr");
						System.out.println(matcherMn.group(1));
						tmp_zp_qual = matcherMn.group(1);
					}
				}
				// Auslesen Zählerstand mit :
				if (result[x].startsWith("QTY+")) {
					Pattern patternMn = Pattern.compile("\\:(\\p{Graph}+):");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zählerstand");
						System.out.println(matcherMn.group(1));
						tmp_zp_zlstand = matcherMn.group(1);
						// Wenn Zähler gefunden neue Prüfung überspringen
						continue;
					}
				}
				// Auslesen Zählerstand
				if (result[x].startsWith("QTY+")) {
					Pattern patternMn = Pattern.compile("\\:(\\d+)");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zählerstand");
						System.out.println(matcherMn.group(1));
						tmp_zp_zlstand = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Ablesgrund
				if (result[x].startsWith("CCI+ACH")) {
					Pattern patternMn = Pattern.compile("\\+\\W(\\w++)");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Ablesegrund");
						System.out.println(matcherMn.group(1));
						tmp_zp_zlgr = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Ablesestatus
				if (result[x].startsWith("CCI+16")) {
					Pattern patternMn = Pattern.compile("\\+\\D(\\w++)");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Zählerstatus");
						System.out.println(matcherMn.group(1));
						tmp_zp_status = matcherMn.group(1);
						continue;
					}
				}
				// Auslesen Wandlerfaktor
				if (result[x].startsWith("MEA+SV+RY+A9")) {
					Pattern patternMn = Pattern.compile("\\:(\\p{Graph}+)");
					Matcher matcherMn = patternMn.matcher(result[x]);
					if (matcherMn.find()) {
						System.out.println("Wandlerfaktor");
						System.out.println(matcherMn.group(1));
						tmp_zp_wandfak = matcherMn.group(1);
						// Übergabe der Werte an den tmporäre ArrayList
						// tmp_zlpnkt
						tmp_zlpnkt.add(new Zaehlpunkt(hcounter, tmp_msg_sender,
								tmp_msg_receiver, tmp_zp_bez, tmp_zp_dat,
								tmp_zp_zlger, tmp_zp_obis, tmp_zp_qual,
								tmp_zp_zlstand, tmp_zp_zlgr, tmp_zp_status,
								tmp_zp_wandfak));
						continue;
					}
				}
			}
		}
		//Übergabe an des TableModel
		ZaehlpunktTableModel tableModel = new ZaehlpunktTableModel();
		tableModel.addNewMutliData(tmp_zlpnkt);
	}
}
```



Für das JTable habe ich ein eigenes TableModel geschrieben:


```
package testing2;

import java.util.ArrayList;

import javax.swing.event.EventListenerList;
import javax.swing.table.AbstractTableModel;

public class ZaehlpunktTableModel extends AbstractTableModel {
	
	
	public static final int ID_COLUMN		= 0;
	public static final int SENDER_COLUMN 	= 1;
	public static final int RECEIVER_COLUMN = 2;
	public static final int BEZ_COLUMN 		= 3;
	public static final int DAT_COLUMN 		= 4;
	public static final int ZLGER_COLUMN 	= 5;
	public static final int OBIS_COLUMN 	= 6;
	public static final int QUAL_COLUMN     = 7;
	public static final int ZLSTAND_COLUMN  = 8;
	public static final int ZLGR_COLUMN		= 9;
	public static final int STATUS_COLUMN   = 10;
	public static final int WANDFAK_COLUMN  = 11;
	
	private final static ArrayList<Zaehlpunkt> zaehlpunkte = new ArrayList<Zaehlpunkt>();


	public void addNewMutliData(ArrayList<Zaehlpunkt> newZaehlpunkte) {
		int first = zaehlpunkte.size();
		int last = first + newZaehlpunkte.size() - 1;
		zaehlpunkte.addAll(newZaehlpunkte);
		fireTableRowsInserted(first, last);	
		}
	
	public void addSingleData(Zaehlpunkt zaehlpunkt) {
		int index = zaehlpunkte.size();
		zaehlpunkte.add(zaehlpunkt);
		fireTableRowsInserted(index, index);
	}
	
	public void remove(int index){
		zaehlpunkte.remove(index);
	} 
	
	public int getRowCount() {
		return zaehlpunkte.size();
	}
	
	public int getColumnCount() {
		return 12;
	}
	@Override
	public Class getColumnClass(int column) {
		return getValueAt(0, column).getClass();	
	}	
	
	
	public Zaehlpunkt getZaehlpunkt(int row) {
		return zaehlpunkte.get(row);
	}
	
	public Object getValueAt(int row, int column) {
		Zaehlpunkt zaehlpunkte1 = zaehlpunkte.get(row);
		switch (column) {
		case ID_COLUMN:
			return zaehlpunkte1.getId();
		case SENDER_COLUMN:
			return zaehlpunkte1.getMsg_sender();
		case RECEIVER_COLUMN:
			return zaehlpunkte1.getMsg_receiver();
		case BEZ_COLUMN:
			return zaehlpunkte1.getZp_bez();
		case DAT_COLUMN:
			return zaehlpunkte1.getZp_dat();
		case ZLGER_COLUMN:
			return zaehlpunkte1.getZp_zlger();
		case OBIS_COLUMN:
			return zaehlpunkte1.getZp_obis();
		case QUAL_COLUMN:
			return zaehlpunkte1.getZp_qual();
		case ZLSTAND_COLUMN:
			return zaehlpunkte1.getZp_zlstand();
		case ZLGR_COLUMN:
			return zaehlpunkte1.getZp_zlgr();
		case STATUS_COLUMN:
			return zaehlpunkte1.getZp_status();
		case WANDFAK_COLUMN:
			return zaehlpunkte1.getZp_wandfak();
		}
		return null;
	}
	@Override
	public String getColumnName (int columnIndex) {
		String ueberschriften[] = {"Id", "Sender", "Empfänger", "Zählpunkt",
				"Zählerdatum", "Gerätenummer", "OBIS-Nr", "Qualifyer", "Zählerstand",
				  "Ablesegrund", "Status Zählstand", "Wandlerfaktor"};
		return ueberschriften[columnIndex];
		
	}
		
	
}
```

Ich habe mir ein GUI in der Klasse MainFrame zusammen gebaut:
Dort wird auch unter den Punkten jMenuItemVerzeich und JMenuItemDatei das Auslesen nach einen FileChooserDialog ausgeführt 
(ich poste Ausschnitte des Code)


```
/**
	 * This is the default constructor
	 */
	public MainFrame() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(1339, 978);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			UIManager
					.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
			e.printStackTrace();
		}
		this.setJMenuBar(getJJMenuBar());
		this.setContentPane(getJContentPane());
		this.setTitle("Abgleich Zählerpunkte fehlerhafter MSCONS");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */

	/**
	 * This method initializes jPanelWest
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanelWest() {
		if (jPanelWest == null) {
			GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
			gridBagConstraints2.gridx = 0;
			gridBagConstraints2.fill = GridBagConstraints.BOTH;
			gridBagConstraints2.ipadx = 1;
			gridBagConstraints2.gridy = 1;
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.fill = GridBagConstraints.BOTH;
			gridBagConstraints.weighty = 1.0;
			gridBagConstraints.gridx = 0;
			gridBagConstraints.gridy = 0;
			gridBagConstraints.weightx = 1.0;
			jPanelWest = new JPanel();
			jPanelWest.setLayout(new GridBagLayout());
			jPanelWest.setName("Westlicher Ausschnitt");
			jPanelWest.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
			jPanelWest.setPreferredSize(new Dimension(500, 500));
			jPanelWest.add(getJScrollMscons(), gridBagConstraints);
			jPanelWest.add(getJPanelSouthWest(), gridBagConstraints2);
		}
		return jPanelWest;
	}

	/**
	 * This method initializes jScrollMscons
	 * 
	 * @return javax.swing.JScrollPane
	 */
	private JScrollPane getJScrollMscons() {
		if (jScrollMscons == null) {
			jScrollMscons = new JScrollPane();
			jScrollMscons.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
			jScrollMscons.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			jScrollMscons.setViewportView(getJTableMSCONS());
		}
		return jScrollMscons;
	}

	/**
	 * This method initializes jPanelEast
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanelEast() {
		if (jPanelEast == null) {
			GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
			gridBagConstraints10.gridx = 0;
			gridBagConstraints10.fill = GridBagConstraints.BOTH;
			gridBagConstraints10.weightx = 1.0D;
			gridBagConstraints10.weighty = 0.0D;
			gridBagConstraints10.gridy = 1;
			GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
			gridBagConstraints9.fill = GridBagConstraints.BOTH;
			gridBagConstraints9.weighty = 1.0;
			gridBagConstraints9.gridx = 0;
			gridBagConstraints9.gridy = 0;
			gridBagConstraints9.insets = new Insets(5, 5, 5, 5);
			gridBagConstraints9.weightx = 1.0;
			jPanelEast = new JPanel();
			jPanelEast.setLayout(new GridBagLayout());
			jPanelEast.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
			jPanelEast.setPreferredSize(new Dimension(500, 500));
			jPanelEast.add(getJScrollDatabase(), gridBagConstraints9);
			jPanelEast.add(getJPanelSouthEast(), gridBagConstraints10);
		}
		return jPanelEast;
	}

	/**
	 * This method initializes jScrollDatabase
	 * 
	 * @return javax.swing.JScrollPane
	 */
	private JScrollPane getJScrollDatabase() {
		if (jScrollDatabase == null) {
			jScrollDatabase = new JScrollPane();
			jScrollDatabase
					.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			jScrollDatabase
					.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
			jScrollDatabase.setViewportView(getJTableDATABASE());
		}
		return jScrollDatabase;
	}

	/**
	 * This method initializes jTableMSCONS
	 * 
	 * @return javax.swing.JTable
	 */
	private JTable getJTableMSCONS() {
		if (jTableMSCONS == null) {
			jTableMSCONS = new JTable();
			jTableMSCONS.setModel(new ZaehlpunktTableModel());
			jTableMSCONS.setAutoCreateRowSorter(true);
			jTableMSCONS.setAutoResizeMode(0);
			jTableMSCONS.setRowHeight(25);
			jTableMSCONS.setAutoCreateColumnsFromModel(true);
			jTableMSCONS
					.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		}
		return jTableMSCONS;
	}

	/**
	 * This method initializes jTableDATABASE
	 * 
	 * @return javax.swing.JTable
	 */
	private JTable getJTableDATABASE() {
		if (jTableDATABASE == null) {
			jTableDATABASE = new JTable();
			jTableDATABASE.setModel(new DataBaseTableModel());
			jTableDATABASE.setAutoCreateRowSorter(true);
			jTableDATABASE.setRowHeight(25);
			jTableDATABASE.setAutoCreateColumnsFromModel(true);
			jTableDATABASE.setAutoResizeMode(0);
		}
		return jTableDATABASE;
	}

	/**
	 * This method initializes jJMenuBar
	 * 
	 * @return javax.swing.JMenuBar
	 */
	private JMenuBar getJJMenuBar() {
		if (jJMenuBar == null) {
			jJMenuBar = new JMenuBar();
			jJMenuBar.add(getJMenuProgramm());
			jJMenuBar.add(getJMenuDatei());
			jJMenuBar.add(getJMenuDatabase());
		}
		return jJMenuBar;
	}

	/**
	 * This method initializes jMenuDatei
	 * 
	 * @return javax.swing.JMenu
	 */
	private JMenu getJMenuDatei() {
		if (jMenuDatei == null) {
			jMenuDatei = new JMenu();
			jMenuDatei.setText("MSCONS-Dateien");
			jMenuDatei.add(getJMenuItemVerzeich());
			jMenuDatei.add(getJMenuItemDatei());
			jMenuDatei.add(getJMenuItemLoeschen());
		}
		return jMenuDatei;
	}

	/**
	 * This method initializes jMenuItemDatei
	 * 
	 * @return javax.swing.JMenuItem
	 */

	// Einzelne MSCONSDatei öffnen
	private JMenuItem getJMenuItemDatei() {
		if (jMenuItemDatei == null) {
			jMenuItemDatei = new JMenuItem();
			jMenuItemDatei.setText("MSCONS einzeln einlesen");
			jMenuItemDatei
					.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent e) {
							JFileChooser singleData = new JFileChooser();
							singleData
									.setFileSelectionMode(JFileChooser.FILES_ONLY);
							singleData.setFileFilter(new FileFilter() {
								@Override
								public boolean accept(File f) {
									return f.isDirectory()
											|| f.getName().toLowerCase()
													.endsWith(".txt");
								}

								@Override
								public String getDescription() {
									return "*.txt";
								}
							});
							if (singleData.showOpenDialog(getParent()) != JFileChooser.APPROVE_OPTION)
								return;
							try {
								filename = singleData.getSelectedFile()
										.getAbsolutePath();
								FileParser.start(filename);
							} catch (Exception ex) {
								// ex.printStackTrace();
							}
						}
					});
		}
		return jMenuItemDatei;
	}

	/**
	 * This method initializes jMenuItemVerzeich
	 * 
	 * @return javax.swing.JMenuItem
	 */
	private JMenuItem getJMenuItemVerzeich() {
		if (jMenuItemVerzeich == null) {
			jMenuItemVerzeich = new JMenuItem();
			jMenuItemVerzeich.setText("Alle MSCONS im Verzeichniss einlesen");
			jMenuItemVerzeich
					.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent e) {
							JFileChooser multiData = new JFileChooser();
							multiData
									.setFileSelectionMode(JFileChooser.FILES_ONLY);
							multiData.setMultiSelectionEnabled(true);
							multiData.setFileFilter(new FileFilter() {
								@Override
								public boolean accept(File f) {
									return f.isDirectory()
											|| f.getName().toLowerCase()
													.endsWith(".txt");
								}

								@Override
								public String getDescription() {
									return "*.txt";
								}
							});
							if (multiData.showOpenDialog(getParent()) != JFileChooser.APPROVE_OPTION)
								return;
							try {
								File[] files = multiData.getSelectedFiles();
								if (files != null && files.length > 0) {
									for (int i = 0; i < files.length; i++) {
										FileParser.start(files[i]
												.getAbsolutePath());
									}
								}
							} catch (Exception ex) {
								ex.printStackTrace();
							}
						}
					});
		}
		return jMenuItemVerzeich;
	}

	/**
	 * This method initializes jMenuItemLoeschen
	 * 
	 * @return javax.swing.JMenuItem
	 */
	private JMenuItem getJMenuItemLoeschen() {
		if (jMenuItemLoeschen == null) {
			jMenuItemLoeschen = new JMenuItem();
			jMenuItemLoeschen.setText("Alle MSCONS aus Tabelle löschen");
		}
		return jMenuItemLoeschen;
	}

	/**
	 * This method initializes jMenuProgramm
	 * 
	 * @return javax.swing.JMenu
	 */
	private JMenu getJMenuProgramm() {
		if (jMenuProgramm == null) {
			jMenuProgramm = new JMenu();
			jMenuProgramm.setText("Programm");
			jMenuProgramm.add(getJMenuItemBeenden());
		}
		return jMenuProgramm;
	}

	/**
	 * This method initializes jMenuItemBeenden
	 * 
	 * @return javax.swing.JMenuItem
	 */
	private JMenuItem getJMenuItemBeenden() {
		if (jMenuItemBeenden == null) {
			jMenuItemBeenden = new JMenuItem();
			jMenuItemBeenden.setText("Beenden");
			jMenuItemBeenden
					.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent e) {
							System.exit(getDefaultCloseOperation());
						}
					});
		}
		return jMenuItemBeenden;
	}


	/**
	 * This method initializes jMenuDatabase
	 * 
	 * @return javax.swing.JMenu
	 */
	private JMenu getJMenuDatabase() {
		if (jMenuDatabase == null) {
			jMenuDatabase = new JMenu();
			jMenuDatabase.setText("Datenbank");
			jMenuDatabase.add(getJMenuItemEigenschaften());
		}
		return jMenuDatabase;
	}

	/**
	 * This method initializes jMenuItemEigenschaften
	 * 
	 * @return javax.swing.JMenuItem
	 */
	private JMenuItem getJMenuItemEigenschaften() {
		if (jMenuItemEigenschaften == null) {
			jMenuItemEigenschaften = new JMenuItem();
			jMenuItemEigenschaften.setText("Verbindung herstellen");
			jMenuItemEigenschaften
					.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent e) {
							// Datenbank Eigenschaften öffnen
							activateConnectionDialog();
						}
					});
		}
		return jMenuItemEigenschaften;
	}

	// @jve:decl-index=0:visual-constraint="10,10"
	void activateConnectionDialog() {
		connect();
	}

    public void connect() {
        	 dataBase = new DatabaseConnector();
    }
}
```

Wenn jemand weiß wo mein Fehler liegt bitte unbedingt melden - weiß echt nicht mehr weiter :bahnhof:


----------



## Verjigorm (15. Feb 2011)

Nimm doch im TableModel anstatt der Arraylist ein Set


----------



## MichaFL123 (15. Feb 2011)

Hej danke für den Tip, leider muss ich aber eine ArrayList verwenden.


----------



## Chéfkóch (15. Feb 2011)

Dann check doch einfach mit contains() ob das Objekt schon in der Liste ist


----------



## Verjigorm (15. Feb 2011)

Oder mach dir ne Funktion, die die Arraylist in ein Set packt und dann wieder zurück in die Arraylist schreibt (zwar unschön aber was solls  ) Gibt doch genug Möglichkeiten, dies zu realisieren.

contains() benutzen ist natürlich zu bevorzugen


----------

