Mouse Listener in JTable - Zellen

Kaelron

Grünschnabel
Hi,
ich habe eine JTable mit einem MouseListener , dort interessiert mich besonders die Methode "mouseEntered".
Der Listener reagiert leider nur einmal wenn ich mit der maus in die tabelle reinkomme.. ich will aber dass er jedesmal reagiert wenn ich von einer Zelle in eine andere wechsle ...
(ich will unten eine aktuelle anzeige " MAUS BEFINDET SICH IN ZEILE x und SPALTE y")

Kann / Muss ich jeder einzelnen ZELLE einen MouseListener geben , wenn ja wie ?

Thx
Gruß
 
Original geschrieben von Kaelron
Hi,
ich habe eine JTable mit einem MouseListener , dort interessiert mich besonders die Methode "mouseEntered".
Der Listener reagiert leider nur einmal wenn ich mit der maus in die tabelle reinkomme.. ich will aber dass er jedesmal reagiert wenn ich von einer Zelle in eine andere wechsle ...
(ich will unten eine aktuelle anzeige " MAUS BEFINDET SICH IN ZEILE x und SPALTE y")

Kann / Muss ich jeder einzelnen ZELLE einen MouseListener geben , wenn ja wie ?

Thx
Gruß

Ich weiss nicht, ob das überhaupt funktioniert, wie Du das oben beschreibst. Aber ich habe einen Alternativvorschlag: Überschreib für Deine JTable die Methode getToolTipText() und implementiere sie nach Deinem Geschmack. Oder brauchst Du die Info an anderer Stelle?
 
ich weiss nicht ob ich dich richtig verstanden habe ... aber mir scheint es dass auch der ToolTip nur für die ganze Component , also für die JTable zählt... ich kann mir also kein ToolTip machen der immer die aktuelle Zelle anzeigt, weil das nicht ständig aktualisiert wird , oder doch
 
Hallo!

Meinst du vielleicht soetwas:

Code:
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

/*
 * Created on 17.05.2004
 */

/**
 * @author ASW
 *
 */
public class TableTest extends JFrame {

	private JTable table;
	private JScrollPane scrollPane;

	public TableTest() {
		super("TableTest");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(320, 240);
		init();
		show();
	}

	/**
	 * 
	 */
	private void init() {
		table = new JTable(10, 5);
		table.addMouseMotionListener(new MouseMotionAdapter() {
			public void mouseMoved(MouseEvent evt) {
				Point p = evt.getPoint();
				int y = table.rowAtPoint(p);
				int x = table.columnAtPoint(p);
				//System.out.println("x: " + x + " | y: " + y);
				table.setToolTipText("x: " + x + " | y: " + y);
			}
		});
		scrollPane = new JScrollPane();
		scrollPane.setSize(300, 200);
		scrollPane.getViewport().add(table);
		getContentPane().add(scrollPane);
	}

	public static void main(String[] args) {
		new TableTest();
	}
}

Gruß Tom
 
Das zwar für genau diesen Zweck, wenn jedoch weitere Funktionalität benötigt wird, muss ein anderes Komzept her.
Angenommen Du zeigst in der Tabelle Auftragsnummern an und möchtest als ToolTip Zustzinformationen über Kunde, Bestellwert oder was weiss ich noch alles angeben, dann geht das nicht wie in dem gezeigten Beispiel. Dann führt der Weg über einen eigenen TableCellRenderer, in dem die getTableCellRendererComponent(...) und getToolTipText(...) implementiert werden müssen.
 
Zurück