# JTable markier- aber nicht veränderbar



## DominikSt95 (24. Jan 2013)

Hey Leute, 

ich wollte kurz fragen, ob es möglich ist, eine JTable so zu konfigurieren, dass eine Veränderung der einzelnen Zellen unmöglich ist, eine Markierung(Doppel- oder Rechtsklick) aber schon? Habe es vorhin mit 
	
	
	
	





```
setEditable(false)
```
 probiert, aber das ging nicht, da ich nichts mehr markieren konnte...

Danke schonmal


----------



## Timothy Truckle (25. Jan 2013)

DominikSt95 hat gesagt.:


> ich wollte kurz fragen, ob es möglich ist, eine JTable so zu konfigurieren, dass eine Veränderung der einzelnen Zellen unmöglich ist, eine Markierung(Doppel- oder Rechtsklick) aber schon? Habe es vorhin mit
> 
> 
> 
> ...


Du musst einn eigenen [JAPI]DefaultTableCellEditor[/JAPI] schreiben der auf dem Original-JTextField   
	
	
	
	





```
setEnabled(true); setEditable(false);
```
 aufruft.

bye
TT


----------



## DominikSt95 (25. Jan 2013)

Ersteinmal danke für die schnelle Antwort 

Leider hab ich das mit dem DefaultTableCellEditor nicht hinbekommen, könnte mir kurz jemand erklären, wie das genau geht? Danke!


----------



## Yamanuchi (25. Jan 2013)

Ich bin mir nicht sicher was du genau tun willst.
Aber das wäre der Ansatz:


```
JTextField textF = new JTextField();
textF.setEditable(false);
//Textfield Inhalt nicht vergessen

table.setDefaultEditor(new DefaultCellEditor(textF));
```


----------



## DominikSt95 (25. Jan 2013)

Der Code bringt irgendwie nicht das, was ich wollte...

Ich erkläre es einfach nochmal: Ich möchte, dass der Inhalt der einzelnen Zellen nicht verändert werden kann, wie es nach der Benutzung von 
	
	
	
	





```
setEnable(false)
```
 der Fall ist. Problem nach der benutzung des Befehls ist aber, dass ich die Zeilen nachher nichtmehr markieren kann, das soll aber weiterhin möglich sein(also bei Klick auf die bestimmte Zelle: Markierung)...Hoffe, es wird so ein wenig klarer


----------



## Yamanuchi (25. Jan 2013)

Indem du isCellEditable(...) in einem eigenen TableModel überschreibst und einfach immer false zurückliefern lässt sorgst du dafür, dass alle Zellen der Tabelle automatisch nicht editierbar sind.

Das könnte dein Problem lösen:

```
DefaultTableModel tableModel = new DefaultTableModel() {

    @Override
    public boolean isCellEditable(int row, int column) {
       //all cells false
       return false;
    }
};

table.setModel(tableModel);
```


----------



## DominikSt95 (25. Jan 2013)

Ups, das mit dem Tippfehler tut mir Leid, war für meine Verhältnisse schon spät gestern 

Editable ist in der Tat das, was ich haben will, aber irgendwie gibt es die Methode in JTable nicht, Eclipse bietet mir nur setEditingRow und Column an.


----------



## Yamanuchi (25. Jan 2013)

Hab den Post davor mal geändert, so sollte es gehen.


----------



## DominikSt95 (25. Jan 2013)

Danke! Musste noch 2 kleine Methoden überschreiben(getRowCount() und getCollumnCount()), danach gings genauso, wie ich es mir erhofft habe! 

Danke!

*EDIT* Noch eine kleinigkeit...gibt es eine Möglichkeit, die markierbaren Zellen zu begrenzen? Ich möchte zB haben, dass nur eine Zelle gleichzeitig markiert werden kann. Danke schonmal


----------



## Yamanuchi (28. Jan 2013)

Du könntest auf getRowCount validieren - >1 wäre dann illegal.


----------



## bERt0r (28. Jan 2013)

JTable (Java Platform SE 7 )

z.B:

```
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
```


----------

