Methoden eigenes TableModel -> removeRow möglich machen

GianaSisters

Bekanntes Mitglied
Hallo Zusammen,

ich möchte aus dem jTable2 gerne die ausgewählte Reihe löschen.
Wenn ich das über das DefaultTableModel mache geht das. Allerdings über mein selber gemachtes Model nicht. Muß ich die Methode für "removeRow" irgendwie vererbbar machen oder wie mache ich das?
Ich weiß gar nicht wie ich die Überschrift für das Problem nennen soll.

Java:
((DefaultTableModel)jTable1.getModel()).removeRow(i);
((MeinFixedTableModel)(jTable2.getModel())).removeRow(i);

Würde mich über Hilfe freuen,
Giana...
 

HimBromBeere

Top Contributor
Ich schätze mal, deine MeinFixedTableModel erbt von DefaultTableModel?

EDIT: Hab´s grade geggogelt, du musst natürlich die abstrakte Klasse AbstractTable implementieren und nicht DefaultTable erweitern...
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> du musst natürlich die abstrakte Klasse AbstractTable implementieren und nicht DefaultTable erweitern...

von AbstractTableModel muss man technisch gesehen auch erweitern/ erben, ist kein Interface ;)
allgemein kann durchaus auch DefaultTableModel die Grundlage sein, je nachdem wie man es machen will,

ohne den Code von MeinFixedTableModel, besonders den Code zum Entfernen von Zeilen, kann man offensichtlich nur schwer beurteilen, was daran nicht funktioniert
 

HimBromBeere

Top Contributor
Dein Einwand mit dem Interface stimmt natürlich (aber die abstralte metjode muss IMPLEMENTIERT werden :D, puh, nochmal gerettet).

Wie auch immer, du musst aber in jedem Fall die Methode removeRow() überschreiben...
 

GianaSisters

Bekanntes Mitglied
Danke für die vielen Antworten.

Der Code sieht so aus:
Java:
public class MeinFixedTableModel extends AbstractTableModel{    
    public int getRowCount()
    {return data1.length;}
    public int getColumnCount()
    {return 2;}
    public Object getValueAt( int row, int col )
    {return data1[row][col];}
    public String getColumnName(int col)
    {return (String)column1[col];}  
    public boolean isCellEditable(int row, int column) {
        return (true);
      }

Wie würde der Code nun für das RemoveRow aussehen wenn ich den da einfügen würde?
 

Michael...

Top Contributor
Da Du mit Arrays arbeitest ist das ein bisschen komplizierter - besser wäre z.B. eine ArrayList.
In Deinem Fall musst Du in der
Code:
removeRow
ein neues Array ohne die zu löschende "Zeile" erzeugen, diese der Variablen data1 zuweisen und anschließend
Code:
fireTableRowDeleted(int, int)
aufrufen.
 

Dekker

Bekanntes Mitglied
Da data1 ein Array zu sein scheint, musst du einen neuen Arrayanlegen und alle Einträge die nicht gelöscht werden in den neuen Array kopieren.

Gerade wenn deine Tabelle sich häufig ändern kann, ist es Ratsam eine andere Datenstruktur (ich würde Vector in deinem Fall vorschlagen) zu verwenden.

Edit: Jo, ArrayList ist auch ne gute Idee, muss ich MIchael rechtgeben ^^
 
S

SlaterB

Gast
und vor allem: ja, die Methode removeRow(int) muss überschrieben werden, darin der Code
 

GianaSisters

Bekanntes Mitglied
Danke für die schnellen Antworten.
Ich hätte nicht gedacht, dass es so kompliziert ist. Es exisitiert mehrere ArrayListen die nicht nur Text sondern auch Werte der Rahmen enthält. Diese wird jedes mal wenn eine Aktion eintritt (Hinzufügen von Zeile - jTablewerte laden, Rahmen setzen usw). Da jetzt dran rumspielen würde sehr viel Arbeit und umformen bedeuten. Im Prinzip soll (bzw. DARF) es nur die gleiche Funktion haben wie:

((DefaultTableModel)jTable1.getModel()).removeRow(i);

Ohne das auf den inhalt geguckt wird sondern einfach nur eine Zeile weggenommen wird geht nicht so einfach ?
Also vermutlich text hier rein:

Java:
 public void removeRow(int reihe){
      ....  
    }
 
S

SlaterB

Gast
DefaultTableModel removeRow() entfernt eine Zeile aus den DefaultTableModel-Daten,
genauso könntest du etwas aus deinen Daten entfernen, bisher ist nur das data-Array zu sehen, keine anderen Daten die du benennst,
das ist ziemlich dasselbe

du kannst auch komplett auf eigenes Model verzichten und ein DefaultTableModel verwenden, welchem du deine Daten übergibst

----

kompliziert denkbar wäre, die Daten-Arrays usw. unverändert zu lassen und nur im Model zu merken, welche Indexe aktuell erlaubt sind,
das Löschen einer Zeile hieße dann 'Index 5 ignorieren, Size-1, Index 6 danach ist Zeile 7 in Ursprungsdaten' usw.,
eher noch schlimmer als direkt zu löschen ;)
 

Michael...

Top Contributor
Ohne das auf den inhalt geguckt wird sondern einfach nur eine Zeile weggenommen wird geht nicht so einfach ?
Einfach ist relativ. Ich würde das als nicht sonderlich kompliziert einschätzen. Man muss ja nur eine Kopie eines Arrays erstellen, exklusive eines bestimmten Datensatzs. Ist ja eine klassische Anfängerübung.
Da aber nun mal Dein TableModel auf data1 basiert (s. z.B. getValueAt()) bleibt Dir fast nichts anderes übrig. Die anderen theoretischen Möglichkeiten, sind eher noch komplizierter.
 

GianaSisters

Bekanntes Mitglied
Etwas mehr Code...
Ich hatte an anderer Stelle schonmal Hilfe benötigt um die ersten 2 Spalten sozusagen einzufrieren.
Um dies zu realisieren mußte ich einen 2ten Table machen, der ein eigenes Model besitzt. Mit dem DefaultTableModel ging dies nicht. Somit wird beim transferieren der Daten aus der Datenbank in den jTable erstmal die ganze Tabelle gelöscht. Das hatte ich mit dieser FOR-Schleife realisiert.


Java:
for(int i=jTable1.getRowCount()-1;i>=0;i--) {
            ((DefaultTableModel)jTable1.getModel()).removeRow(i);
            ((MeinFixedTableModel)(jTable2.getModel())).removeRow(i);
        }

Ich habe aber auch noch die Funktion "Löschen" wo dann die mit der Maus ausgewählte Reihe gelöscht wird (eher: alles mit dem Rahmenumschlungene). Ich möchte jetzt ungern in die systematik der Rahmen und Texte mich einmischen.
Hier nochmal die Screenshot.

http://www.dj-t-motion.de/fmeascreen.jpg
Bitte haltet euch nicht an Data1 fest. Das ist erstmal nur zum testen. Später wird data1 sehr statisch, das muß ich acuh noch umsetzen, aber ich wollte jetzt das was im jTable1 ist erstmal auch genauso (nur das es diesmal ein eigenes tableModel ist, umsetzen)

wie würde das Codemäßig aussehen wenn er einen refresh macht mit der untersten Zeile weniger in einem Array?!
 
Zuletzt bearbeitet:
B

bygones

Gast
[ot]Das ist ja mal ein geiler Benutzername.... mannoman - da werden erinnerungen wach :)[/ot]
 

Michael...

Top Contributor
Später wird data1 sehr statisch, das muß ich acuh noch umsetzen, aber ich wollte jetzt das was im jTable1 ist erstmal auch genauso (nur das es diesmal ein eigenes tableModel ist, umsetzen)
Warum statisch?
wie würde das Codemäßig aussehen wenn er einen refresh macht mit der untersten Zeile weniger in einem Array?!
Wie gesagt, Du musst einfach nur eine neues Array ohne die entsprechende "Zeile" erstellen und dieses der usprünglichen Variablen zu weisen. Woran scheitert es denn?
Hier mal eine Möglichkeit um einen beliebigen Index (im Bsp. Index 3) aus einem Array zu löschen:
Java:
	int[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	System.out.println(java.util.Arrays.toString(a));
	int[] b = new int[a.length-1];
	int toDelete = 3;
	int bCounter = 0;
	for (int i=0; i<a.length; i++) {
		if (i!=toDelete) {
			b[bCounter++] = a[i];
		}
	}
	a = b;
	System.out.println(java.util.Arrays.toString(a));
 
S

SlaterB

Gast
deine vorherigen Themen sind mir zumindest wohlbekannt, aber es ändert nichts daran dass du wie immer keine richtigen Fragen stellst, keinen Code postest, keine Fehler oder konkreten Probleme beschreibst

> wie würde das Codemäßig aussehen wenn er einen refresh macht mit der untersten Zeile weniger in einem Array?!
es wurde doch schon dazu was geschrieben, neues Array anlegen, Zeilen kopieren, was soll man mehr sagen außer für dich die Programmierung zu übernehmen?
du musst mitarbeiten, was ist ganz konkret das Problem?
kannst du ein Array mit der Länge um 1 kleiner anlegen, ja oder nein?
kannst du das vorhandene Array mit einer for-Schleife durchlaufen, ja oder nein?
bezieht sich deine Frage unabhängig von dem Array auf das 'refresh machen', was immer du damit meinst, ja oder nein?
wie genau kommt es bei dir eigentlich zum Löschen, wird ein Button gedrückt?
alles musst du haargenau ausführlich beschreiben, Code dazu posten und und und

wenn du mit dem Array Probleme hast, könntest du etwa deine TableModel usw. vorerst vergessen und dich einem ganz anderen Programm widmen
Java:
public class Test
{
    public static void main(String[] args)
    {
        int[] a = {1,2,3,4,5};
        // wie kann ein Array b erstellt werden wie a mit einer Zeile weniger
    }
}
ist das deine Frage, ja oder nein?
(edit: Lösung inzwischen vorhanden, sogar auch mit int[] a und b ;) )

--------

generell noch ein Tipp, da ich das andere mit der doppelten Tabelle etwas kenne:
versuche nicht alles immer in dein kompliziertes Hauptprogramm einzubauen,

du kannst doch auch erstmal ein komplett anderes neues JFrame anfangen mit EINER Tabelle,
mit vergleichbaren individuellen Model auf einfachen Dummy-Daten, und dort das Löschen üben

je einfacher die Programme, desto leichter kannst du hier dann auch den Code dazu posten,
ohne unseliges GroupLayout, GUI-Builder und sonstige Altlasten, die keine Rolle spielen

ob danach der Einbau in dein Hauptprogramm klappt ist eine weitere Frage,
aber von einem Nebenprogramm mit funktionierenden Löschen wäre es eine ganz andere Ausgangslage
 
Zuletzt bearbeitet von einem Moderator:

GianaSisters

Bekanntes Mitglied
Tut mir leid, dass ich immer so unkonkret frage.
Im Prinzip hab ich das Problem, dass es mir 1. so vorkommt, wenn ich nun die methode removeRow(int reihe) überschreibe, dass ich dann da sozusagen komplizierten Code schreiben muss, damit er in die tiefen Niederungen der jTable Reihenlöschung vordringen muss und ich mir nicht vorstellen kann wie man das mit normaler programmierung hinbekommt - sonst hätte ja auch die removeRow methode- im AbstractTableModel mit drinnenstecken können.

Desweiteren ist Data momentan:
Java:
Object[][] data1 = {{"1","11","A","","","","",""},
{"2","22","","B","","","",""},
{"3","33","","","C","","",""},
{"4","44","","","","D","",""},
{"5","55","","","","","E",""},
{"6","66","","","","","","F"}};
Also ein mehrdimensionales Object

Wenn ich jetzt die 2.Reihe löschen möchte, würde ich das irgendwie schon hinbekommen, aber ich frage mich, ob dann nicht die untereste Zeile im jTable leer bleibt, ich will ja nicht Text gelöscht haben sondern überhaupt den schreibbaren bereich.

Ja im normalfall (wie es auch bei dem anderen Problem bei dem gefrieren war) versuche ich es mit einem kleinen Programm. Das ich hier an so eine komplizierte Stelle stoße hätte ich nicht gedacht. Also hier konkret:
wie muss
Java:
public void removeRow(int reihe){
        
    }
aussehen, damit z.b. die dritte Zeile gelöscht wird. Das Beispiel von Michael... (danke dafür) war mir für ein normales Array klar.


mit dem refreshen meinte ich, wenn ich jetzt data1 umändern würde, wäre das dann sofort da oder muss man noch enien refresh machen ? Ich blamiere mich hier gerade so... Aber zu meiner Rettung hab ichs ja in den Anfängerbereich gepostet
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Wenn ich jetzt die 2.Reihe löschen möchte, würde ich das irgendwie schon hinbekommen, aber ich frage mich, ob dann nicht die untereste Zeile im jTable leer bleibt, ich will ja nicht Text gelöscht haben sondern überhaupt den schreibbaren bereich.
Ausprobieren?
Was meinst Du warum Du die Methoden getRowCount und getValueAt überschreiben hast und bei ersterer
Code:
data1.length
zurückgibst? Sowas macht man ja nicht zum Spass. Das TableModel definiert die Spalten, Zeilen und Zelleninhalte der JTable.
 
S

SlaterB

Gast
für ein zweidimensionales Array geht es genauso, das ist eigentlich auch nur ein normales Array, nur dass die einzelnen Elemente keine ints sind sonder zufällig auch (dann eindimensionale) Arrays

> ob dann nicht die untereste Zeile im jTable leer bleibt, ich will ja nicht Text gelöscht haben sondern überhaupt den schreibbaren bereich.

dafür gibts ja die Methode
> public int getRowCount() {return data1.length;}
die 1 weniger zurückliefern wird -> Tabelle kleiner
 

GianaSisters

Bekanntes Mitglied
Danke, das refreshen durch fireTableRowDeleted klappt (jedenfalls werden direkt die passenden Rahmen angezeigt was vorher erst durch klicken auf die Zeilen geschah).

ich habe jetzt mal spaßeshalber
Java:
public int removeRow(int reihe){
        return data1.length-1;
    }
gemacht in der Hoffnung, dass der jTable dann um eine Zeile kürzer wird. Ist aber leider nicht der Fall
 

GianaSisters

Bekanntes Mitglied
Sorry, dann habe ich gar keine Ahnung wie man überhaupt was am Table dort verändern kann.
ich dachte in der RemoveRow methode muß ich nun Data1 verändern und wenn Data1 als Return ausgegeben wird dann ändert sich somit auch der jTable wenn er refreshed wird oder denke ich da falsch ?

Also muß es theoretisch so aussehen:
Java:
 public Object removeRow(int reihe){
        
    return data1;
    }

und in der methode selbst muß data1 verändert werden, oder?
 
S

SlaterB

Gast
was läßt dich vermuten, dass die Rückgabe irgendwas bringen könnte?
weder JTable noch jemand sonst in der GUI ruft diese Methode auf,
das machst du höchstens selber, etwa im Listener eines Buttons, und dann nutzt du den Rückgabewert ja nicht..,

grundsätzlich muss man irgendwo aufgeschnappt haben, dass bei TableModel die Benachrichtigung der JTable wichtig ist,
damit diese reagieren kann, AbstractTableModel bietet dafür fireXY()-Methoden, ansonsten muss man es selber machen,
die JTable sollte als TableModelListener registriert sein, da gibt es letzlich nur eine Methode

was macht DefaultTableModel remove? kann man nachschauen, wenn auch wieder nicht ganz leicht, Quellcode nötig:
Java:
    /**
     *  Removes the row at <code>row</code> from the model.  Notification
     *  of the row being removed will be sent to all the listeners.
     *
     * @param   row      the row index of the row to be removed
     * @exception  ArrayIndexOutOfBoundsException  if the row was invalid
     */
    public void removeRow(int row) {
        dataVector.removeElementAt(row);
        fireTableRowsDeleted(row, row);
    }
Daten ändern, Tabelle informieren,
nichts mit Rückgabewert oder sonstiges
 

GianaSisters

Bekanntes Mitglied
Danke, der denkansatz hilft mir weiter...
Nur, dass data1 bei mir halt ein blödes Object [][] Array ist. Im Prinzip soll es ja einfach nur leer sein und keine Daten beinhalten bis der Benutzer das ändert.
Wie man sieht soll data1 am Anfang leer sein, aber die Zeile
Java:
 public Object getValueAt( int row, int col )
    {return data1[row][col];}
wird dann zu einem Error (Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0). Wieso kann er das nicht so akzeptieren ?
Eigentlich wollte ich ja gar nicht mit Arrays arbeiten sondern einfach nur eine Zeile im jTable löschen. Echt blöd, dass das nicht so einfach geht. In meinem Programm habe ich keine extra Klasse für die Tables gemacht, da ich logischerweise von dort aus nicht auf Data1 zugreifen kann und ergänzende Zeilen wie:
Java:
public Object getValueAt( int row, int col, Object[][] data1 )
    {return data1[row][col];}
bringen einen da wohl auch nicht weiter. Ich weiß nicht mehr weiter....
Hier mein Programmcode:

Java:
public class FmeaHauptSeite extends javax.swing.JFrame {
    final Color color = UIManager.getColor("Table.gridColor");
   // DefaultTableModel dtm;
    int markierteSpalte;
    Globales gb = new Globales();
    
    Object[][] data1 = {{}};
    Object[] column1 =  {"No", "Funktion", "pot.Fehler", "pot.Folge", "B", "pot.Ursache", "A", "V/P", "aktuelle Maßnahme", "E", "RPZ", "empfohlene Maßnahme", "zu erledigen durch/bis", "getroffene Maßnahme", "B", "A", "E", "RPZ", "Status"};
    String StrID = "";
  //  List list = new ArrayList( Arrays.asList( new String[]{"Purzelchen", "Hässchen"} ) );
   
    AktuelleRahmen komplettrahmen = new AktuelleRahmen();
    List<Integer> funktionRahmenliste = new ArrayList<Integer>();
    List<Integer> potFehlerRahmenliste = new ArrayList<Integer>();
    
public class MeinTableModel extends AbstractTableModel{
    public int getRowCount()
    {return 0;}
    public int getColumnCount()
    {return 2;}
    public Object getValueAt( int row, int col )
    {return data1[row][col];}  
} 
public class MeinFixedTableModel extends AbstractTableModel{    
    public int getRowCount()
    {return data1.length;}
    public int getColumnCount()
    {return 2;}
    public Object getValueAt( int row, int col )
    {return data1[row][col];}
    public String getColumnName(int col)
    {return (String)column1[col];}  
    public boolean isCellEditable(int row, int column) {
        return (true);
      }
    public void removeRow(int row) {
    //    data1.removeElementAt(row);
        fireTableRowsDeleted(row, row);
    }
}  
    // Um überall an die Daten zu kommen
 public void setData1(Object[][] dataOrg){
     data1 = dataOrg;
 }
 public Object[][] getData1(){
     return data1;
 }
 public void setColumn1(Object[] dataOrg){
     column1 = dataOrg;
 }
 public Object[] getcolumn1(){
     return column1;
 }
 
S

SlaterB

Gast
> wird dann zu einem Error (Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0). Wieso kann er das nicht so akzeptieren ?

was hat das mit dem remove zu tun?
anscheinend hast du das remove noch nicht implementiert, dann ist das doch ein vollkommen unabhängiges Thema?
von einem leeren Array kann nix gelesen werden, ist das nicht sonnenklar?
was verstehst du daran schon wieder nicht? es wäre doch fatal fehlerhaft, wenn Java sich dann einfach einen Wert ausdenken würde

dadurch, dass die getRowCount()-Methoden im Falle eines leeren Arrays auch 0 zurückgeben,
sollte sinnvoll verhindert werden, dass die JTable getValueAt() in diesem Fall überhaupt aufruft,

------

für das remove gilt wie schon vor ca. 1000 Postings, dass du data1 verkleinern musst,
ich sehe aktuell keine Frage?

wobei du in diesem Fall mit data1 außerhalb des Models sowieso auf eine Methode im Model verzichten könntest,
du kannst data1 auch direkt vom Listener eines Buttons ändern, oder wo immer das remove angestoßen wird,

wichtig: du musst in jeden Fall bei BEIDEN Models fireTableRowsDeleted(row, row); aufrufen, damit beide JTable in der GUI informiert werden

-----

Java:
public class MeinTableModel extends AbstractTableModel{
    public int getRowCount()
    {return 0;}
scheint übrigens ziemlich sinnlos, zu dem Model wird doch wohl in der GUI aktuell nichts angezeigt?

das geplante Konzept aus dem alten Thema
http://www.java-forum.org/awt-swing-swt/129668-spaltennamen-jtable-spaeter-rauslesen.html
mit aufgesplitteten Models, Vorlage
Java:
      public int getColumnCount() {
        return column.length - 3;
      }
scheint auch nicht umgesetzt zu sein
 
Zuletzt bearbeitet von einem Moderator:

GianaSisters

Bekanntes Mitglied
Danke nochmal, ich hoffe dies wird nun mein letzter Post. Das mit dem leeren Array verstehe ich, dass er dann natürlich nicht drauf zugreifen kann, aber das ziel ist es ja denke ich dieses Leer zu bekommen.

Ich habe den Post gefunden:
http://www.java-forum.org/java-basi...6617-array-element-hinzufuegen-entfernen.html

Da scheint es so zu sein, als ob ich aus einem Array nicht ein Element löschen kann, sondern es über eine Arraylist machen sollte. Aber ich denke das TableModel kann nur mit normalen Arrays arbeiten. Wie würde ein 2-dimensionale Arraylist von folgendem aussehen ?

Java:
 Object[][] data1 = {{"1","11","A","","","","",""},
{"2","22","","B","","","",""},
{"3","33","","","C","","",""},
{"4","44","","","","D","",""},
{"5","55","","","","","E",""},
{"6","66","","","","","","F"}};

Falls das nicht geht, wüßte ich nicht weiter.

Ich habe mal folgendes Versucht, jedes Element auf Null zu machen, immerhin hat dann mein jTable leere Elemente aber die Felder sind noch vorhanden. Wie ich da jetzt aus data1 eine ganze Reihe lösche ist wohl nicht möglich... Naja... Ich hoffe jemand versteht mein Problem :(
Sorry SlathaB, du gibst Dir echt Mühe aber ich glaube ich verstehe es einfach nicht. Habe bisher immer mit ArrayList gearbeitet und auf diesem Niveau hier wird wohl alles per normalen Array gemacht.
die Methode "data1.removeElementAt(row);" geht mit diesem normalen Array ja auch nicht.


Java:
public void removeRow(int row) {
        for (int xx = 0; xx<2;xx++){
          System.out.println("Der inhalt: " + jTable2.getValueAt(row, xx));         
          data1[row][xx]=null;      
        }
       //  jTable2.;
        fireTableRowsDeleted(row, row);
    }
 
S

SlaterB

Gast
aus einem Array eine Zeile zu löschen wurde ja schon besprochen, ist relativ leicht,
da ist auch nichts auf null zu setzen, sondern kleineres Array + kopieren!
es ist so leicht, es steht schon geschrieben in diesem Thread...

ArrayList ist natürlich schöner, aber auch das musst du im wesentlichen selber machen,
was ist eine Zeile? da kannst du bei einem eindimensionalen Array bleiben oder auch eine Liste wählen,
das für sich musst du als ersten Punkt klären

-----

danach 10 Zeilen (wie auch immer die jeweils umgesetzt sind) in eine Liste einfügen, wo sollte da irgendeine Art von Schwierigkeit bestehen?
ich werde dir niemals irgendwelchen Code schreiben, denken musst du schon selber können

getValueAt() und andere Methoden der TableModel danach passend anpassen
 

GianaSisters

Bekanntes Mitglied
Danke, allerdings verändert sich ja nun ständig die Größe des Array, somit müßte dieses kleine Array dynamisch sein. In dem Beispiel von Michael...
Java:
int[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    System.out.println(java.util.Arrays.toString(a));
    int[] b = new int[a.length-1];
sind das alles statische Arrays, aber meins muss sich ja ständig ändern wenn man eine Zeile hinzufügt bzw löscht. Wie macht man das denn ?
Ich bin jetzt so weit, dass ich soweit von jTable1 in jTable2 ein Abbild durch die ArrayList erstelle (wodurch natürlich irgendwann der Out of Range fehler kommt weil die größen so unterschiedlich sind.
 
S

SlaterB

Gast
ersetze
> int[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
durch
> int[] a = beliebiges ;
am Ende wird ja auch b in a gespeichert,
der eigentliche Code funktioniert für jede Länge, und übrigens auch für jeden Datentyp,
du könntest allein in der Definition des neuen Arrays
> int[] b = new int[a.length-1];
per Texteditor 'int' durch 'String[]' ersetzen und hättest quasi den korrekten Code für dein String[][] ..
 

Michael...

Top Contributor
Danke, allerdings verändert sich ja nun ständig die Größe des Array, somit müßte dieses kleine Array dynamisch sein. In dem Beispiel von Michael...
Java:
int[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    System.out.println(java.util.Arrays.toString(a));
    int[] b = new int[a.length-1];
sind das alles statische Arrays, aber meins muss sich ja ständig ändern wenn man eine Zeile hinzufügt bzw löscht. Wie macht man das denn ?
Davon reden wir ja die ganze Zeit. Ein Array - einmal erstellt - hat eine feste, unveränderliche Größe. Wenn Du Zeilen hinzufügst oder entfernst, muss ein neues Array erzeugt (Bsp. Zeile 3) und der ursprünglichen Variablen zugewiesen (Bsp. Zeile 11) werden.
 

GianaSisters

Bekanntes Mitglied
Vielen Dank, ich habs nun damit gelöst, dass ich eine neue Methode in das Model geschrieben habe:

Java:
public void gleichsetzen(ArrayList<String> Werte, int zanzahl){
        System.out.println(Werte);
        Object[][] data2 = new Object[zanzahl][16];
        for (int x=0;x <zanzahl;x++){
            
            for (int y = 0; y<16;y++){
               data2[x][y] = Werte.get(y+x*16); 
            }
             
        }
        data1 = data2;
    }

Funktioniert nun wie gewünscht. Danke für die Geduld !
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C eigenes TableModel Java Basics - Anfänger-Themen 2
Q Eigenes TableModel - NullPointerException Java Basics - Anfänger-Themen 6
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
8 Eigenes Bild in email einfügen Java Basics - Anfänger-Themen 1
G eigenes package Java Basics - Anfänger-Themen 3
Anfänger2011 Eigenes Betriebssystem Java Basics - Anfänger-Themen 6
P Eigenes Fenster erstellen Java Basics - Anfänger-Themen 5
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
P eigenes Equal mit IndexOf() Java Basics - Anfänger-Themen 5
L eigenes Steuerelement Zeitstrahl Java Basics - Anfänger-Themen 3
F Eigenes Package - Variable exportieren Java Basics - Anfänger-Themen 11
D Eigenes Event beim TimeOut Java Basics - Anfänger-Themen 2
C Eigenes Konsolenfenster Java Basics - Anfänger-Themen 3
D Packages verwenden und in eigenes Projekt integrieren Java Basics - Anfänger-Themen 3
B Eigenes Package Java Basics - Anfänger-Themen 6
S Eigenes Objekt temporär verändern? (Clone)? Java Basics - Anfänger-Themen 12
M Eigenes Programm Flaechenrechner Java Basics - Anfänger-Themen 8
L Eigenes List Model für Icon + String -> Speicherhungrig? Java Basics - Anfänger-Themen 8
X Eigenes Kontosystem vervollständigen Java Basics - Anfänger-Themen 11
Developer_X eigenes ImageIcon schreiben Java Basics - Anfänger-Themen 11
Q Eigenes Event feuern Java Basics - Anfänger-Themen 5
S Eigenes Kontextmenü Java Basics - Anfänger-Themen 3
I jar in eigenes Programm unwandeln (OSX und Win) Java Basics - Anfänger-Themen 4
R Eigenes Pair Object Java Basics - Anfänger-Themen 2
data89 In Java ein eigenes Lexikon erstellen? Doch wie? Java Basics - Anfänger-Themen 5
GilbertGrape Eigenes Event? Java Basics - Anfänger-Themen 2
K javadoc eigenes doclet in console starten Java Basics - Anfänger-Themen 3
B Eigenes Event schreiben Java Basics - Anfänger-Themen 7
M Eigenes Ellipse2D-Objekt Java Basics - Anfänger-Themen 5
G Eigenes Fenster Java Basics - Anfänger-Themen 51
N Eigenes Icon in InputDialog geht nicht! Java Basics - Anfänger-Themen 7
J Eigenes Symbol für Java Programm Java Basics - Anfänger-Themen 3
M Eigenes Seitenformat definieren Java Basics - Anfänger-Themen 2
F eigenes Package Java Basics - Anfänger-Themen 2
B Package/Klasse in ein eigenes Projekt einbinden? aber wie? Java Basics - Anfänger-Themen 6
padde479 Zeile entfernen TableModel Java Basics - Anfänger-Themen 11
O TableModel Java Basics - Anfänger-Themen 8
E JTable + TableModel updaten? Java Basics - Anfänger-Themen 1
M TableModel Hintergrundfarbe Java Basics - Anfänger-Themen 6
E Tablemodel füllen..mit gefilterten Daten Java Basics - Anfänger-Themen 2
K keine Reaktion im TableModel nach ändern der liste? Java Basics - Anfänger-Themen 2
K funktioniert in einem TableModel ein Initialisierungsblock? Java Basics - Anfänger-Themen 3
W Problem mit Serialisierung und TableModel Java Basics - Anfänger-Themen 3
J JTable aktualisieren wenn TableModel sich ändert Java Basics - Anfänger-Themen 6
Z TableModel Methode setValueAt Java Basics - Anfänger-Themen 9
w0ddes ImageIcon in Objektarray (TableModel) einfügen. Java Basics - Anfänger-Themen 7
babel TableModel Java Basics - Anfänger-Themen 28
W Innerhalb TableModel auf aktivierte Reihe reagieren Java Basics - Anfänger-Themen 3
B JTable- TableModel und TableCellRenderer Konflikt Java Basics - Anfänger-Themen 4
J Vector - JTable - TableModel Java Basics - Anfänger-Themen 14
G TableModel Java Basics - Anfänger-Themen 7
M TableModel befüllen Java Basics - Anfänger-Themen 14
S JTable removeRow() IndexOutOfBounceException - wieso? Java Basics - Anfänger-Themen 3
G addRow(), removeRow() Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben