JTabel Listener Problem / Editierbarkeit

Status
Nicht offen für weitere Antworten.

paplo-g

Mitglied
Hallo
ich stehe gerade auf dem Schlauch, ...

Ich habe eine JTabel und nun möchte ich mittel Listener erkennern in Welcher Zeile und Spalte ich mich befinde.
Welchen Listener muss ich nehmen, um das zu realisieren.
Habe schon fast alles durch...

Wie kann ich der JTabel sagen das sich nicht editierbar ist?

Best Dank !!!
 
du brauchst einen mouslistener


Code:
	table.addMouseMotionListener(new MouseMotionAdapter() {
			public void mousePressed(MouseEvent evt) {
				Point p = evt.getPoint();
				int row = table.rowAtPoint(p);
				int col = table.columnAtPoint(p);
			}
		});



das musst in der JTable überschreiben...
Code:
		public boolean isCellEditable(int row, int column) {
				
			return false;
		}
 
SirWayne hat gesagt.:
du brauchst einen mouslistener
MouseListener ist die falsche Lösung. Damit bekommst Du ja nicht mit, wenn jemand die Tastatur benutzt... Und sowas passiert. :shock: Auf das selection model einen ListSelectionListener hängen; zum Beispiel:
Code:
// Create a list selection listener
final ListSelectionListener listener = new ListSelectionListener() {
  @Override
  public void valueChanged(ListSelectionEvent event) {
    // do your stuff
  }
};

// Add list selection listener to row selection model
table.getSelectionModel().addListSelectionListener(listener);

// If necessary (column selection allowed)
// Add listener to column selection model
table.getColumnModel().getSelectionModel().addListSelectionListener(listener);
(Code im Browser getippt, kann also leicht falsch sein)

Ebenius
 
Hallo erstmal besten Dank,

jedoch mit dem Maus Listener stimmt, ich mochte auch Keybord Abfragen erhalten.

Bei dem ListSelectionListener bekomme ich aber keinerlei Informationen
über die Aktuelle row, colum !!!
 
Einfach im listener die Tabelle abfragen:
Code:
table.getSelectedRow();
table.getSelectedColumn();

Wenn Du mit den Daten auf das Modell zugreifen willst, geht's so:
Code:
final int viewRow = table.getSelectedRow();
if (viewRow > -1) {
  // We have a selection
  final int modelRow = table.convertRowIndexToModel(viewRow);
  // Do your stuff here
} else {
  // selection is empty
}

Ebenius
 
paplo-g hat gesagt.:
Bei dem ListSelectionListener bekomme ich aber keinerlei Informationen
über die Aktuelle row, colum !!!

Dazu kannst du auch das ListSelectionEvent Objekt auswerten (am besten auf http://java.sun.com/javase/6/docs/api/ ) nachsehen ;-) Auf alle Fälle würde ich listSelectionEvent.getValueIsAdjusting() prüfen. Nur wenn diese Methode false liefert, ist der Selecktionsvorgang erst abgeschlossen.
 
MadMG hat gesagt.:
Dazu kannst du auch das ListSelectionEvent Objekt auswerten (am besten auf http://java.sun.com/javase/6/docs/api/ ) nachsehen ;-) Auf alle Fälle würde ich listSelectionEvent.getValueIsAdjusting() prüfen. Nur wenn diese Methode false liefert, ist der Selecktionsvorgang erst abgeschlossen.

Nützlicher Hinweis... Ich ergänze aber: Die Selektionsergebnisse sind aus dem Event nicht zu bekommen. Da steht nur der Bereich drin, der neu geprüft werden muss.
 
Ebenius hat gesagt.:
MadMG hat gesagt.:
Dazu kannst du auch das ListSelectionEvent Objekt auswerten (am besten auf http://java.sun.com/javase/6/docs/api/ ) nachsehen ;-) Auf alle Fälle würde ich listSelectionEvent.getValueIsAdjusting() prüfen. Nur wenn diese Methode false liefert, ist der Selecktionsvorgang erst abgeschlossen.

Nützlicher Hinweis... Ich ergänze aber: Die Selektionsergebnisse sind aus dem Event nicht zu bekommen. Da steht nur der Bereich drin, der neu geprüft werden muss.
Danke für den Hinweis, in der Doc steht der Hinweis bei den Methoden getFirstIndex() und getLastIndex() dabei
...whose selection value may have changed...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben