daten in eine Jtable über ein JDialog anzeigen

Hi

Das Default-TM hat von allen Methoden schon eine (Dummy-)Implementierung und könnte theoretisch unverändert für eine Table verwendet werden (nur Daten werden dann keine drin sein, programmiermäßig würds aber gehen).
Das Abstract-TM ist eine unvollständige Vorlage, welche Methoden so ein TM zu haben hat.
Es sind aber noch kein Code für alle Methoden da, deswegen kann es nicht direkt verwendet werden (der Compiler würde sich schon beschweren). Sinnvoll ist es nur für die Vererbung.

Vererbungen kann man von beiden verwenden.
Das Default-TM ist auch vom Abstract-TM abgeleitet.

Gruß
 
Die serialVersionUID ist, wie SPiKEe bereits gesagt hat, nur für die Serialisierung wichtig. Wird dich in den meisten Fällen also gar nicht interessieren. Ich lass mein Eclipse das aber dazu generieren. Die serialVersionUID ist die Version einer Klasse und sollte bei Änderungen auch wieder neu generiert werden, damit die Gegenseite, die eine veraltete Version der Klasse benutzt, das auch mitbekommt und der Programmierer dann gezwungen wird auch den Empfänge zu aktualisieren. Wenn die Veränderungen zu stark waren, dann würde es eventuell irgendwo knallen und keiner wüsste warum. So meckert bereits der entsprechende Stream beim "Auspacken" des empfangenen Objektes.

Aber wie gesagt, wird dich wohl meist eh nich interessieren. Kannst du auch weglassen, wenn du willst.

Das mit den TableModels hat sheel ja bereits gut erklärt. Ich persönlich leite lieber das DefaultTableModel ab, weil dieses eben auch so schon einsatzfähig ist und ich es nur noch um die Fähigkeit mit vollständigen Objekten umzugehen erweitern muss. Das kannst du mit einem AbstractTableModel auch machen, ist aber mehr Aufwand.

Das ist ja auch nur ein Beispiel, es gibt viele Wege zum Ziel ^^
 
Zuletzt bearbeitet:
ich habe noch eine Frage was das Löschen angeht und zwar wenn ich zum beisoiel 5 zeilen in der Tabelle habe, und möchte die zeilen 3 und 5 löschen (nach dem ich die markiert habe) dann werden die zeilen 1 und 2 gelöscht.

hat jemand eine Idee wie man das lösen kann

Java:
private void mitarbeiterLoeschen() {
		
		int rows [] = table.getSelectedRows();
		
		if(rows != null)
		{
			for (int i=rows.length-1 ; i>=0 ;i--) {
				System.out.println(i);
				
				myDefaultModel.removeRow(i);
			}
		}
	
	}
 
Zuletzt bearbeitet:
Java:
private void mitarbeiterLoeschen() {
        
    int rows [] = table.getSelectedRows();
    int i, j;
        
    if(rows != null) {
         for (i = 0; i < rows.length; i++) {
            myDefaultModel.removeRow(rows[i]);
            for(j = i + 1; j < rows.length; j++) {
                if(rows[i] < rows[j])
                    rows[j]--;
            }
        }
    }
}

Gruß
 
ich möchte an dieser stelle die daten an einer zeile ändern sodass wenn ich eine zeile Markiere und Button(Datensatz ändern) anklicke die angeben dieser zeile in ein Jdialog ändern kann.
hat jemand eine Idee wie das geht .
PS. ich habe keine Datenbank
 
a) machst du in dienem Tablemodel Methoden,
die dem restlichen Programm Zugriff auf die Daten ermöglichen.

b) wenn der Buttn geklickt wird, fragst du die Werte ab,
zeigst sie irgendw und erlaubst Änderungen.

c) Bei "OK" etc. gibst du über eine andere Methode die Daten wieder ins Tablemodel, dort wird auch ein fire...changed ausgeführt, um die Anzeige der Tabelle zu aktualisieren.
 
ich kann bis jetzt die daten von einer zeile in JDialog auslesen , wenn ich die zeile markiere und den Button <<Datensatz Ändern>> anklicke, aber wenn ich was ändere und OK drücke wird dann eine neue zeile hinzugefügt, aber ich will die zeile einfach ändern..
 
Dann musst du vorher das Objekt was du editieren willst *also deine Zeile* aus der Tabelle entfernen. Oder du veränderst dierekt das Objekt und lässt dann über ein validate() alles neu rendern. Soweit ich aber den bisherigen Code verfolgt habe macht das "Ändern" nichts weiter als die Daten eines vorhandenen Datensatzes auszulesen und einen neuen Datensatz mit anderen Werten zu erstellen .. also quasi ein CLONE.
 
Soweit ich aber den bisherigen Code verfolgt habe macht das "Ändern" nichts weiter als die Daten eines vorhandenen Datensatzes auszulesen und einen neuen Datensatz mit anderen Werten zu erstellen .. also quasi ein CLONE.

ja genau , aber in meinem Fall wird eine neue Zeile erstellt mit neuen werten, und die markierte Zeile bleibt in der tabelle
das problem liegt hier

Java:
public void actionPerformed(ActionEvent arg0) {
		if(arg0.getSource() == buttonOK)
			
		{
			 
			
			 mitDefaultModel.addRow(mitarbeiterEinfuegen());
				
		      
			setVisible(false);
		}

Java:
public Mitarbeiter mitarbeiterEinfuegen()
	{
		String name = t_nachname.getText();
		String vorname = t_vorname.getText();
		String wohnort = t_wohnort.getText();
		
		int alter=0;
		try {
			 alter = Integer.parseInt(t_alter.getText());
		} catch (Exception e) {
			JOptionPane.showMessageDialog(buttonOK, "Das Alter ist falsch");
		}
		
		
		boolean verheiratet;
		if(verheiratetBox.isSelected())
		  verheiratet = true;
		else verheiratet = false;
		
 		mitarbeiter = new Mitarbeiter(name, vorname, wohnort, alter, verheiratet);
 		
		return mitarbeiter;
 		
 		
	}

wie kann ich das umwandeln dass die Methode addRow aufgerufen wird nur wenn ich einen neuen datensatz einfügen möchte
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück