AbstractTableModel kopieren

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,

wahrscheinlich stelle ich mich einfach nur zu dumm an um folgendes Problem zu lösen.

Ich habe zwei Tabellen, tableA und tableB.
tableA hat ein AbstractTableModel names modelA.

Jetzt würde ich gerne tableB ein modelB zuweisen, dass ein eigenständiges Model ist, aber den gleichen Inhalt wie modelA hat.

Ich habs so probiert:
Code:
MyAbstractTableModel modelA = new MyAbstractTableModel();
JTable tableA = new JTable(modelA);
... // fülle modelA mit Daten
MyAbstractTableModel modelB = modelA;
JTable tableB = new JTable(modelB);

Das funktioniert nicht, da anstatt einer Kopie nur eine Referenz auf modelA erzeugt wird. Sprich wenn ich modelB ändere wird auch modelA geändert. Wie kann ich eine richtige Kopie erzeugen?
 

Marco13

Top Contributor
Wahrscheinlich ist MyAbstractTableModel eine Klasse, die du geschrieben hast, und die AbstractTableModel erweitert. (sie ist zwar offenbar nicht merh abstract, aber... Namen sind Schall und Rauch :roll: ). Wie auch immer du die Daten in diesem MyAbstractTableModel erstellst oder speicherst: Du kannst einen Konstruktor anbieten
Code:
class MyAbstractTableModel extends AbstractTableModel 
{
    public MyAbstractTableModel(MyAbstractTableModel other)
    {
        ...
    }
    ...
}
der die Daten aus 'other' einfach in 'this' rüberkopiert. Wenn das nicht klappt, wirst du (Teile von) MyAbstractTableModel posten müssen...
 

0001001

Bekanntes Mitglied
Marco13 hat gesagt.:
Wenn das nicht klappt, wirst du (Teile von) MyAbstractTableModel posten müssen...
Wenns weiterhilft, hier mein AbstractTableModel:
Code:
public class MyAbstractTableModel extends AbstractTableModel {
	private String[] columnNames = {"IP","MAC","OUI","Hostname"};
	private ArrayList<String[]> data = new ArrayList<String[]>();

	public int getColumnCount() {
		return columnNames.length;
	}

	public int getRowCount() {
		return data.size();
	}

	public String getColumnName(int col) {
		return columnNames[col];
	}

	public Object getValueAt(int row, int col) {
		return data.get(row)[col];
	}

	public Class getColumnClass(int c) {
		return getValueAt(0, c).getClass();
	}

	public boolean isCellEditable(int row, int col) {
		return false;
	}

	
	public void setValueAt(Object value, int row, int col) {
		String[] tmp = data.get(row);
		tmp[col] = (String)value;
		data.set(row, tmp);
		fireTableCellUpdated(row, col);
	}	

	public void addRow(String[] data) {	
		if(!isExisting(data)){
			this.data.add(data);
			this.fireTableDataChanged();
		}
	}
	
	public void removeAllRows(){
		data = null;
		data = new ArrayList<String[]>();
		this.fireTableDataChanged();
	}
	
	public void removeRows(int[] rows){
		Arrays.sort(rows);
		
		for(int i=rows.length-1;i>=0;i--){
			data.remove(rows[i]);
		}
		this.fireTableDataChanged();
	}
	
	/**
	 * Check if a entry is already existing in the table
	 * @param data
	 * @return
	 */
	private boolean isExisting(String[] data){
		String ip = data[0];
		boolean check = false;
		for(int i=0;i<this.data.size();i++){
			if(this.data.get(i)[0].equalsIgnoreCase(ip)){
				check = true;
			}
		}
		return check;
	}
}

Was mich wundert, warum es die Methode clone(), die es ja sonst bei Objekten gibt, hier nicht gibt.
 

Marco13

Top Contributor
Es "gibt" schon ein clone, aber dem muss man ggf. sagen, was es machen soll. Aber so ein copy-Konstruktor wäre da wohl sinnvoller.
Code:
public class MyAbstractTableModel extends AbstractTableModel 
{
   public MyAbstractTableModel(MyAbstractTableModel other)
   {
       for (String s[] : other.data) data.add(s.clone());
   }
...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zeppi Swing AbstractTableModel AWT, Swing, JavaFX & SWT 9
N Swing Print JTable mit AbstractTableModel AWT, Swing, JavaFX & SWT 1
N JTable, AbstractTableModel aus Datenbank initialisieren AWT, Swing, JavaFX & SWT 8
I JTable,AbstractTableModel Problem AWT, Swing, JavaFX & SWT 3
I JTable und AbstractTableModel AWT, Swing, JavaFX & SWT 10
H JTable - DefaultTableModel vs AbstractTableModel AWT, Swing, JavaFX & SWT 5
O Swing AbstractTableModel - Observer.. AWT, Swing, JavaFX & SWT 14
K Swing jTable und AbstractTableModel AWT, Swing, JavaFX & SWT 6
Ollek Swing JTable - Zeile löschen mit AbstractTableModel AWT, Swing, JavaFX & SWT 20
B Swing AbstractTableModel rows verschieben AWT, Swing, JavaFX & SWT 2
M Swing JComboBox im AbstractTableModel AWT, Swing, JavaFX & SWT 8
H Markierte Zeile löschen AbstractTableModel AWT, Swing, JavaFX & SWT 10
K JTable & AbstractTableModel AWT, Swing, JavaFX & SWT 9
G Problem mit AbstractTableModel und JComboBox AWT, Swing, JavaFX & SWT 8
P Eigenes TableModel abgeleitet von AbstractTableModel (neue rows nicht sichtbar) AWT, Swing, JavaFX & SWT 6
Lony AbstractTableModel Exception in thread "AWT-EventQueue- AWT, Swing, JavaFX & SWT 3
G JTable (AbstractTableModel) wird nicht aktualisiert AWT, Swing, JavaFX & SWT 2
F AbstractTableModel + Vector - Wie Zeile hinzufügen AWT, Swing, JavaFX & SWT 4
D JTable, DefaultTableCellRenderer & AbstractTableModel AWT, Swing, JavaFX & SWT 11
N JTable repaint mit AbstractTableModel AWT, Swing, JavaFX & SWT 2
B jTabel, MVC und AbstractTableModel AWT, Swing, JavaFX & SWT 6
M Wann AbstractTableModel und wann DefaultTableModel AWT, Swing, JavaFX & SWT 4
S AbstractTableModel AWT, Swing, JavaFX & SWT 16
M Java Dateien kopieren mit Fortschrittsbalken AWT, Swing, JavaFX & SWT 13
izoards Ordner Rekursiv kopieren - Fortschritt? AWT, Swing, JavaFX & SWT 5
E JLabel kopieren AWT, Swing, JavaFX & SWT 31
VPChief Gibt es eine möglichkeit Dateien aus der jar datei zu kopieren? AWT, Swing, JavaFX & SWT 46
J SWT Textfeld markieren und kopieren AWT, Swing, JavaFX & SWT 0
F JavaFX textField Ausgabe automatisch kopieren AWT, Swing, JavaFX & SWT 7
L Image in anderes kopieren AWT, Swing, JavaFX & SWT 0
S Swing Style Attribute aus JTextPane kopieren AWT, Swing, JavaFX & SWT 1
S Swing Kopieren einer vollständigen Zeile einer JTable AWT, Swing, JavaFX & SWT 3
F Bilder ineinander kopieren AWT, Swing, JavaFX & SWT 3
D Schnelles kopieren von Pixeln in ein BufferedImage AWT, Swing, JavaFX & SWT 25
GUI-Programmer InputStream zu File kopieren - JPrograssbar anzeigen AWT, Swing, JavaFX & SWT 10
S Bilddatei kopieren, aber ohne verluste und ohne zu großen Speicherverbrauch AWT, Swing, JavaFX & SWT 17
D Applet FTP Ordner kopieren AWT, Swing, JavaFX & SWT 3
P Objekt kopieren AWT, Swing, JavaFX & SWT 2
S Dateien kopieren mit ProgressBar AWT, Swing, JavaFX & SWT 6
Landei Swing JTable - Tabellenzeile kopieren AWT, Swing, JavaFX & SWT 2
Daniel_L jEditorPane - Formatierten Text in Zwischenablage kopieren? AWT, Swing, JavaFX & SWT 2
S Inhalt einer JTable kopieren? (GlazedLists) AWT, Swing, JavaFX & SWT 2
H explorer in java - datein kopieren AWT, Swing, JavaFX & SWT 5
M JPanel Inhalt kopieren AWT, Swing, JavaFX & SWT 5
O Panel "kopieren" ? AWT, Swing, JavaFX & SWT 6
H JTable Text aus mehreren Zellen in einer Spalte kopieren? AWT, Swing, JavaFX & SWT 3
E SWT: Tabellen-Inhalt kopieren AWT, Swing, JavaFX & SWT 2
T BufferedImage kopieren AWT, Swing, JavaFX & SWT 3
D Inhalt eines JPanel kopieren AWT, Swing, JavaFX & SWT 7
A Kopieren aus JTextArea nicht zulassen AWT, Swing, JavaFX & SWT 6
R Kopieren in Java AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben