# Drei Fragen/Probleme mit einer JTable



## IceTi (18. Apr 2008)

Hallo,

ich habe da mal zwei Fragen/Probleme mit meiner JTable:

*
1. Ich habe einen "ListSelectionListener" auf dieser JTable laufen. Dieser registriert nun aber den Klick auf eine Zelle und auch wieder das loslassen der Maus. Wie kann ich das einfach nur auf den Klick reduzieren?


2. Wie kann ich das Editieren der Table verhindern, wenn man mit einem Doppelklick auf eine Zelle klickt? Es soll aber trotzdem noch der ListSelectionListener funktionieren also die Table einfach auf "enable(false)" setzen bringt mir dabei irgendwie nichts.
*


Danke für die Hilfe.


----------



## Hunta (18. Apr 2008)

zu 2:


```
jTable1 = new JTable() {
public boolean isCellEditable(int x, int y) {
return false;
				}
};
```

Somit ist keine Zeile editierbar.. WIllst du eine bestimmte spalte editierbar lassen dann machst du einfach:


```
jTable1 = new JTable() {
public boolean isCellEditable(int x, int y) {

if(y==Spaltennr)
return true
else
return false;
	}
};
```

=)

mfg


----------



## Escorter (18. Apr 2008)

zu 1. du könntest ein flag setzen.

```
//Listener
private boolean mouseDown = false;
...
{
 if(!mouseDown){ //Falls die Maustaste nicht schon gedrückt wurde
  // TODO Deine Aktion....
  mouseDown = true;
 }else{
  mouseDown = false;
 }
```

Kann dir nicht versprechen, ob der Code funktioniert, denn was passiert wenn du die maus gedrückt hälst und über einem anderen Feld wieder losläßt kann ich dir nicht sagen. Musst du einfach mal ausprobieren

Vielleicht hilft dir auch der Link noch weiter: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

Gruß,
Esco


----------



## IceTi (18. Apr 2008)

Danke für die Tipps, dass mit dem Doppleklick habe ich nun hinbekommen mit "getValueIsAdjusting".

Nun tritt noch eine kleines 3. Problem auf:

*
3. Wenn ich eine Zelle anklicke und danach direkt die selbe nocheinmal anklicken möchte, dann reagiert der Listener nicht, erst wenn ich auf eine andere und dann wieder auf die 1. klicke bekomme ich einen Wert. Woran liegt das?*


----------



## Michael... (18. Apr 2008)

Zu 1.: ListSelectionEvent besitzt die Methode getValueIsAdjusting()
Wenn also nur die Selektion und nicht die "Deselektion" von Interesse ist:

```
public void valueChanged(ListSelectionEvent evt) {
    if (!evt.getValueIsAdjusting()) {
        //Selektion ist abgeschlossen, also tu was...
    }
}
```
Zu 3.: Der ListSelectionListener reagiert nur, wenn sich die Selektion ändert, für solche Fälle würde ich den MouseListener verwenden


----------



## IceTi (18. Apr 2008)

Kann man das value nicht irgendwie zurücksetzen oder sowas?
Wie packe ich da denn nun noch eine MouseListener mit rein ?


----------



## Michael... (18. Apr 2008)

wenn man sowie so nen MouseListener auf die JTable verwendet, kann man in der Regel den ListSelectionListener weglassen und das alles über den MouseListener machen


----------



## IceTi (18. Apr 2008)

Also einfach austauschen?
Wie wie ändere ich das?

Gibt es denn keine einfacherer Lösung ? Kann ich das nicht manuekl auf Null setzen osder sowas?


----------



## IceTi (21. Apr 2008)

Hmmm, habe ich das Problem mit dem zweimal hintereinander auf eine Zelle klicken immer noch nicht behoben bekommen. 

Das ganze auf den MouseListener umbauen würde meine Arbeit von  Tagen wahrscheinlich wieder weg machen. Gibt es keine andere Möglichkleit.

Kann man den Listener nicht irgendwie nach jedem Klick neu initialisieren oder auf Null setzen oder irgenwie sowas?

Irgendjemand ne Idee ??


----------



## IceTi (22. Apr 2008)

Habe es geschafft... einfach ein                    clearSelection(); am Ende machen ...


----------

