Doppelte Einträge in JTable

MichaFL123

Mitglied
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:)

Java:
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:

Java:
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)

Java:
             /**
	 * 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

Top Contributor
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 :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Doppelte Einträge aus JComboBox rausschmeisen AWT, Swing, JavaFX & SWT 2
B Doppelte MenuBar -> Nach Minimieren verschwunden AWT, Swing, JavaFX & SWT 3
D JTextField doppelte Eingaben ausschließen AWT, Swing, JavaFX & SWT 9
O JList + ValueChanged = doppelte Aktion?! AWT, Swing, JavaFX & SWT 4
A Doppelte JMenuBar AWT, Swing, JavaFX & SWT 2
F Swing JList doppelte werte AWT, Swing, JavaFX & SWT 3
X Doppelte Daten in DefaultListModel unterbinden AWT, Swing, JavaFX & SWT 3
M JComboBox und doppelte Values AWT, Swing, JavaFX & SWT 7
O Doppelte Ausführung von KeyPressed AWT, Swing, JavaFX & SWT 7
R doppelte Ausführung bei einfachem Mausklick! AWT, Swing, JavaFX & SWT 12
G doppelte pufferung AWT, Swing, JavaFX & SWT 3
T Doppelte Abfrage eine Checkbox vermeiden AWT, Swing, JavaFX & SWT 2
K Doppelte Events AWT, Swing, JavaFX & SWT 4
G JComboBox - doppelte Event-Verarbeitung? AWT, Swing, JavaFX & SWT 8
H Doppelte Auswahl bei ItemEvent für eine Dropdownliste AWT, Swing, JavaFX & SWT 5
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
karlmasutra JavaFX ListView zeigt Einträge nicht an AWT, Swing, JavaFX & SWT 11
F JComboBox und Einträge AWT, Swing, JavaFX & SWT 3
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
MrSnake ComboBox-Einträge werden unsichtbar AWT, Swing, JavaFX & SWT 0
C Swing JList zeigt keine neuen Einträge an AWT, Swing, JavaFX & SWT 1
I JavaFX Speichern der eingefügten Einträge beim Neustart des Programms AWT, Swing, JavaFX & SWT 2
D [Anfänger]ComboBox erstellt Einträge in einer anderen ComboBox AWT, Swing, JavaFX & SWT 3
J Einträge aus Table löschen ohne Exception AWT, Swing, JavaFX & SWT 6
M Swing jTable: aktuell angesehne Einträge um Infos erweitern AWT, Swing, JavaFX & SWT 7
S SWT: Drop-Down Menü-Einträge mit Tooltip hervorheben AWT, Swing, JavaFX & SWT 3
J Zusätzliche Einträge in der Taskliste AWT, Swing, JavaFX & SWT 4
M Eclipse-Platform Combo-Binding für User-Einträge AWT, Swing, JavaFX & SWT 9
M SWT Wie mehr als 5000 Einträge zur Auswahl geben? AWT, Swing, JavaFX & SWT 9
K SWT Mehrere Einträge ins Clipboard legen AWT, Swing, JavaFX & SWT 2
C Swing gleiche Einträge in JTable farblich markieren AWT, Swing, JavaFX & SWT 5
_dp Swing Tabelle: Ausklappbare Einträge AWT, Swing, JavaFX & SWT 2
B Swing JList Letzte Einträge oben ... AWT, Swing, JavaFX & SWT 6
A Swing JList Einträge entfernen AWT, Swing, JavaFX & SWT 6
T Swing JComboBox Einträge nach Tastendruck auswerten und aktualisieren AWT, Swing, JavaFX & SWT 8
E JCombobox- Einträge aktualisieren AWT, Swing, JavaFX & SWT 2
R Swing JTable Einträge übernehmen AWT, Swing, JavaFX & SWT 4
dzim JFace ListViewer-Einträge mit CellEditor? AWT, Swing, JavaFX & SWT 3
M brauche Hilfe um Einträge aus Jlist zu löschen AWT, Swing, JavaFX & SWT 4
P List-Einträge auslesen AWT, Swing, JavaFX & SWT 4
I JList - Einträge deaktivieren AWT, Swing, JavaFX & SWT 2
G Tabellen Items Einträge Aktualisieren AWT, Swing, JavaFX & SWT 2
B Probleme bei der dynamischen JCombobox-Einträge und Listener AWT, Swing, JavaFX & SWT 2
C JTable: Einträge werden dupliziert, um letzte Reihe zu fülle AWT, Swing, JavaFX & SWT 3
T JList: best. Einträge nicht selektierbar machen AWT, Swing, JavaFX & SWT 4
G Tabellen Einträge löschen - JTable AWT, Swing, JavaFX & SWT 6
E Einträge der JComboBox werden durch Grafik verdeckt AWT, Swing, JavaFX & SWT 11
R JMenu einträge werden überdeckt AWT, Swing, JavaFX & SWT 3
I Swing JTable zeichnet kein vertical Grid AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
R Swing JTable und Spaltenausrichtung AWT, Swing, JavaFX & SWT 8
G JTable füllen AWT, Swing, JavaFX & SWT 1
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
J Datensatz in jTable ausgeben AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
M JTable.setDefaultRenderer(...) greift nicht AWT, Swing, JavaFX & SWT 0
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
T Swing JTable valueChanged datensatz löschen AWT, Swing, JavaFX & SWT 1
0 Swing JTable aus anderer Klasse updaten AWT, Swing, JavaFX & SWT 5
S Jtable defaultRenderer wohin damit ? AWT, Swing, JavaFX & SWT 23
T Swing JTable / FocusListener AWT, Swing, JavaFX & SWT 0
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen


Oben