# JTable Inhalt löschen



## Sweety (29. Mrz 2010)

Hallo alls zusammen, 

nach langer suche habe ich immer noch nichts gefunden.
Also ich erstelle eine Tabelle das sieht so aus: 


```
final Object[] dataColumnNames = new Object[] { time_g, longitude_g,
				latitude_g, sats_view_g, sats_active_g };

Object[][] data = { { "1", "2", "3", "4", "5" },
				{ "6", "7", "8", "9", "0" }, { "A", "B", "C", "D", "E" },
				{ "F", "G", "H", "I", "J" } };

datat = new JTable(data, dataColumnNames);

JScrollPane datatable = new JScrollPane(datat);
		datatable
				.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		datatable
				.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
		return datatable;
```

Das funktioniert auch wunderbar. Nun ist aber mein Problem wie kann ich nur den Inhalt aus dieser Tabelle löschen?

Es gibt ein removeColumn aber kein removeRows... ???:L
Könnt ihr mir da weiter helfen?
Liebe Grüße


----------



## L-ectron-X (29. Mrz 2010)

Müsste bei dir funktionieren:

```
((DefaultTableModel)datat.getModel()).setRowCount(0);
```


----------



## eRaaaa (29. Mrz 2010)

L-ectron-X hat gesagt.:


> Müsste bei dir funktionieren:
> 
> ```
> ((DefaultTableModel)datat.getModel()).setRowCount(0);
> ```



Wahrscheinlich eher nicht, da bei [c]JTable datat = new JTable(data, dataColumnNames);[/c] das TableModel, das AbstractTableModel ist.

SO müßte es aber gehen

```
DefaultTableModel model = new DefaultTableModel(data, dataColumnNames);
	JTable datat = new JTable(model);
//.....
	model.setRowCount(0);
```


----------



## L-ectron-X (29. Mrz 2010)

Stimmt, haste Recht. Ich bekomme 'ne ClassCastException, wenn ich meine Zeile ausführe.


----------



## Sweety (29. Mrz 2010)

Also ich hab es ausprobiert krieg es aber nicht hin.
Wahrscheinlich bin ich auch einfach nur zu doof...

Also ich habe eine Methode die mir die Tabelle erzeugt. 
In der GUI habe ich einen Button "Tabelle löschen" auf den möchte ich klicken und dann eine leere Tabelle sehen. Dazu liegt in einer anderen Methode auf dem Button (gleiche Methode wie Button) ein ActionListener in dem jetzt das model.setRowCount(0); steht...


```
JButton tabledeleteb = new JButton(tabledelete);
		tabledeleteb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				model.setRowCount(0);

			}
		});
```

Aber irgendwie tut der Button nicht was er soll...
Weitere Vorschläge?


----------



## eRaaaa (29. Mrz 2010)

Sweety hat gesagt.:


> Also ich hab es ausprobiert krieg es aber nicht hin.
> Wahrscheinlich bin ich auch einfach nur zu doof...
> 
> Also ich habe eine Methode die mir die Tabelle erzeugt.
> ...




Kann ich jetzt so nicht nachvollziehen, bei mir klappt das...hast du mal ein KSKB ?

```
public static void main(String... args) throws Exception {
	JFrame frame = new JFrame();
	JPanel panel = new JPanel();

	final Object[] dataColumnNames = new Object[] { "1", "2", "3" };

	Object[][] data = { { "1", "2", "3" }, { "6", "7", "8" },
		{ "A", "B", "C" } };
	final DefaultTableModel model = new DefaultTableModel(data, dataColumnNames);
	JTable datat = new JTable(model);

	JScrollPane datatable = new JScrollPane(datat);
	datatable
		.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
	datatable
		.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
	panel.add(datatable);
	JButton btn = new JButton("DELETE");
	btn.addActionListener(new ActionListener() {
	    @Override
	    public void actionPerformed(ActionEvent e) {
		 model.setRowCount(0);
	    }
	});
	JButton btn2 = new JButton("ADD");
	btn2.addActionListener(new ActionListener() {
	    @Override
	    public void actionPerformed(ActionEvent e) {
		 model.addRow(new Object[]{"hallo","neue","Zeile"});
	    }
	});
	panel.add(btn);
	panel.add(btn2);
	frame.add(panel);
	frame.pack();
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setLocationRelativeTo(null);
	frame.setVisible(true);
    }
```

/eidt: Alternativ, schreib dir halt dein eigenes Model..;>


----------



## Sweety (29. Mrz 2010)

So....ersteinmal Danke  
Aber ich versteh immer noch nicht wo der Fehler ist ...

main:

```
public static void main(String[] args) {
		Layout e;
		e = new Layout();
		e.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		e.setPreferredSize(new Dimension(600, 300));
		e.setMinimumSize(new Dimension(600, 500));
		e.setVisible(true);

	}
```

layout:

```
public Layout() {
		pane.setLayout(new BorderLayout());
		pane.add(getButtonPanel(), BorderLayout.NORTH);
		pane.add(getTable(), BorderLayout.CENTER);
		label = new JLabel();
		pane.add(label, BorderLayout.SOUTH);
		this.setJMenuBar(menuBar());

	}
```

getTable:

```
final Object[] dataColumnNames = new Object[] { time_g, longitude_g,
                latitude_g, sats_view_g, sats_active_g };
 
Object[][] data = { { "1", "2", "3", "4", "5" },
                { "6", "7", "8", "9", "0" }, { "A", "B", "C", "D", "E" },
                { "F", "G", "H", "I", "J" } };
 
datat = new JTable(data, dataColumnNames);
 
JScrollPane datatable = new JScrollPane(datat);
        datatable
                .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        datatable
                .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
        return datatable;
```

getButtonPanel:

```
tabledeleteb = new JButton(tabledelete);
		tabledeleteb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				model.setRowCount(0);
			}
		});
```

Also eigentlich ist alles so wie's soll ...aber ich es geht immer noch nicht.
Das mit den vielen verschiedenen Methoden ist Vorgabe...


----------



## eRaaaa (29. Mrz 2010)

??=

```
model.setRowCount(0);
```
in deinem restlichen geposteten Code kommt model gar nicht vor..?!?! Und das mit dem DefaultTableModel hast du ja anscheinend auch noch gar nicht abgeändert?!?!?


----------



## Sweety (29. Mrz 2010)

Oh sorry 

model: 

```
Object[][] data = { { "1", "2", "3", "4", "5" },
				{ "6", "7", "8", "9", "0" }, { "A", "B", "C", "D", "E" },
				{ "F", "G", "H", "I", "J" } };

		// create a new table and get the ColumnNames and the data
		model = new DefaultTableModel(data, dataColumnNames);
		datat = new JTable(data, dataColumnNames);
...
```

das steht außerhalb:

```
JTable datat = null;
DefaultTableModel model;
JButton tabledeleteb = null;
...
```


----------



## eRaaaa (29. Mrz 2010)

vergleiche Zeile 10 bei mir
[java=10]
datat = new JTable(model);
[/code]

mit
Zeile 7 bei dir
[java=7]
datat = new JTable(data, dataColumnNames);
[/code]

^^


----------



## Sweety (29. Mrz 2010)

Ahhhhhhhh.....
dankeeeeeeee :toll:

perfect      :applaus:

Das wars ... OMG vielleicht sollte ich mal ne Pause machen :lol:
Bin doch zu dumm 

Wenn ich die Tabelle nun speichern will ... kann ich ja mit .getRowCount den wert da raus holen.
Gibt es da ne Methode das die Daten nicht einzelen rausholen muss sondern alle gleichzeitig?
Weil die hängen ja alle von einander ab...???:L


----------

