MouseListener auf table oder scrollPane

MarDaiBre

Aktives Mitglied
Hallo,

ich habe einen MouseListener in meinem Programm platziert, der ein neues Fenster aufruft, sobald eine Zeile in einer Tabelle markiert ist und ein Doppelklick ausgeführt wird. Leider funktioniert der MouseListener nicht, wenn ich ihn der Tabelle oder dem scrollPane (welche die Tabelle enthält) platziere. Er funktioniert jedoch, wenn ich ihn ohne direkte Zuweisung im Konstruktor hinzufüge, jedoch auch nur dann, wenn eine Zeile markiert ist und der Doppelklick NICHT auf der Tabelle oder dem scrollPane stattfindet.

Bedeutet nun, ich muss eine Zeile markieren und dann außerhalb der Tabelle einen Doppelklick machen. Kann mir jemand sagen, wie ich es hinbekomme, dass der MouseListener auch funktioniert, wenn der Doppelklick auf der Tabelle stattfindet?

Hier mal der bisherige Code:
Java:
public class AuswertungGUI extends JFrame implements ActionListener, KeyListener, ItemListener, MouseListener
{

public AuswertungGUI ()
{					
	beschriften(); // Dialogfenster-Titel beschriften
	layoutElements(); // GUI-Elemente positionieren.
		
	/*
	 * Event-Haendler installieren.
	 * 
	 */
	addMouseListener(this);
	table.addMouseListener(this);
	scrollPane.addMouseListener(this);

// WEITERER CODE
}

@Override
public void mouseClicked(MouseEvent event)
{
	if(table.getRowCount() > 0 && (ergebnisL.getText().startsWith("Ergebnis: Fehlerliste") || ergebnisL.getText().startsWith("Ergebnis: Potenzielle Verursacherorte für Fehler")) && event.getClickCount() == 2 && event.getButton() == MouseEvent.BUTTON1) // Doppelklick mit linker Taste auf Liste.
	{			
		zeile = table.getSelectedRow();
		fehler = table.getModel().getValueAt(zeile, 0).toString();
		ort = table.getModel().getValueAt(zeile, 1).toString();
			
		query = "";
			
		xWert = table.getModel().getValueAt(zeile, 3).toString();
		yWert = table.getModel().getValueAt(zeile, 4).toString();
		quad = "Q" + xWert + "." + yWert;
			
		baur = table.getModel().getValueAt(zeile, 5).toString();
			
		Fehleranzeige b = new Fehleranzeige(AuswertungGUI.this, ort, quad, baur);
	}
		
	else if(table.getRowCount() > 0 && ergebnisL.getText().startsWith("Ergebnis: Potenzielle Fehler für Verursacher") && event.getClickCount() == 2 && event.getButton() == MouseEvent.BUTTON1)
	{
		zeile = table.getSelectedRow();
		fehler = table.getModel().getValueAt(zeile, 6).toString();
		ort = table.getModel().getValueAt(zeile, 7).toString();
			
		query = "";
			
		xWert = table.getModel().getValueAt(zeile, 9).toString();
		yWert = table.getModel().getValueAt(zeile, 10).toString();
		quad = "Q" + xWert + "." + yWert;
			
		baur = table.getModel().getValueAt(zeile, 11).toString();
			
		Fehleranzeige b = new Fehleranzeige(AuswertungGUI.this, ort, quad, baur);
	}
}

}

Besten Dank im Voraus!
 

Tucan

Bekanntes Mitglied
Auf den ersten Blick erkenne ich in deinem Code keinen Fehler:shock:.
Vielleicht liegt es an der Implementierung der JTable.
Ich würde mich hier mal probeweise nach Alternativen umsehen:idea:

Bits,
Tucan
 

MarDaiBre

Aktives Mitglied
Hi, danke für deine Antwort. Hmmm, das ist ja blöd. Kann einfach nicht nachvollziehen, warum das nicht geht. Listener ist überall dran...
 

Tucan

Bekanntes Mitglied
Moment, ich habs!!!!:idea:
Du musst den Listener deiner DefaultTableModel oder deinem eigenen Tablemodel hinzufügen!!!
Dann müsste es klappen! :-D
 

X5-599

Top Contributor
Wie genau ist denn das Verhalten bisher bei einem Doppelklick? Wird der Listener gar nicht aufgerufen? In diesem Beispiel reagiert der Listener bei jedem Klick. Bei einem Doppelklick wird die Zelle editiert.

Java:
public static void main(String[] args)
	{
		final JFrame f = new JFrame("Ein Frame zum Schließen");
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setResizable(true);
		
		String[][] data = new String[][]{
				{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"},
				{"11", "12", "13", "14", "15", "16", "17", "18", "19", "20"}
		};
		
		String[] name = new String[]{"name1", "name2", "name3", "name4", "name5", "name6", "name7", "name8", "name9", "name10"};
		
		
		JTable table = new JTable(data, name);
		
		table.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e)
			{
				System.out.println("clicked");
			}
		});
		
		f.add(new JScrollPane(table));
		f.pack();
		f.setVisible(true);
	}
 

MarDaiBre

Aktives Mitglied
Hallo,

@Tucan: Ich hab es mal probiert mit "DefaultTableModel.addMouseListener(this)" bzw. "table.getModel().addMouseListener(this)", da rät er mir aber natürlich zu einem TableListener. Für die Tabelle verwende ich kein eigenes TableModel. Da ist meine Denkweise falsch, oder?

@X5-599: Ich habe mal den MouseListener aus deinem Codebeispiel an die Tabelle gepackt, aber auch hier erhalte ich keine Ausgabe. Ja, überall wird der Listener akzeptiert. Sobald ich aber eine Zeile markiert habe und einen Doppelklick auf die Tabelle ausführe, wird der Listener nicht aufgerufen und keine Aktion/Ausgabe getätigt...
 
Zuletzt bearbeitet:

X5-599

Top Contributor
Sorry. Leider keine Ideen mehr. Du könntest aber spaßeshalber alle Listener der Tabelle entfernen bevor du deinen setzt. Gucken wie sich das dann verhält.

Java:
for(MouseListener m : tabelle.getMouseListeners())
    tabelle.removeMouseListener(m);

tabelle.addMouseListener(deinListener);
 

Harry Kane

Top Contributor
Bist du sicher, daß es sich bei der Tabelle, auf der du den listener registriert hast, und der Tabelle in der GUI um dasselbe Objekt handelt?
Kannst du ein kompilierbares und lauffähiges Program schreiben, was den Fehler zeigt?
 

MarDaiBre

Aktives Mitglied
Hey, bisher leider noch keine Neuigkeiten. Hmm, also ich kann die Zeilen der Tabelle markieren und auch die Inhalte der Zellen abrufen. Sobald es aber um MouseListener geht, reagiert das Programm nicht, sobald ich auf die Tabelle klicke. Selbst ein einfaches "Mache eine Ausgabe, wenn geklickt wird" bei Klick auf die Tabelle wird nicht durchgeführt. So als ob die Tabelle jeglichen MouseListener verhindert...
 

MarDaiBre

Aktives Mitglied
Hey,

es funktioniert nun. Der Grund für das Nicht-Funktionieren: Ich habe innerhalb des ActionListeners per DB-Abfrage der Tabelle eine neue Tabelle aus der DB-Abfrage zugewiesen, also
Java:
 table = db.getTabelle(query);
. Scheinbar hat er dann den vorher angefügten MouseListener wieder gelöscht. Ich habe nun am Ende des ActionListeners erneut den MouseListener an die Tabelle gesetzt und nun geht es!

Danke nochmal für die Hilfe!
 

Harry Kane

Top Contributor
Scheinbar hat er dann den vorher angefügten MouseListener wieder gelöscht. Ich habe nun am Ende des ActionListeners erneut den MouseListener an die Tabelle gesetzt und nun geht es!
Nein, hat "er" (wer auch immer das sein soll) nicht!
Es wurde nix gelöscht. Aber es gibt natürlich auch keinen Automatismus, der irgendwelche Eigenschaften von einer Instanz auf eine andere überträgt, nur weil der Progger meint, er müsste einen Variablenname für ein neues Objekt wiederverwenden.
Du hättest auf das ganze übrigens schon früher kommen können, wenn du über meine oben gestellte Frage nachgedacht hättest.
Schliesslich: eine DB-Abfrage sollte NIEMALS eine Gui-Komponente zurückgeben, sondern nur ein Model, was dann an die Gui-Komponente übergeben wird. Wenn du das so gemacht hättest, hättest du die Probleme nie gehabt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
R Punkt von MouseListener hat falsche Koordinate AWT, Swing, JavaFX & SWT 2
J MouseListener wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 4
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
G vorgefertigte Buttons oder neue Komponente mit MouseListener? AWT, Swing, JavaFX & SWT 0
F ListCellRenderer mit JLabel und MouseListener AWT, Swing, JavaFX & SWT 4
D Event Handling MouseListener funktioniert seit Java 8 nicht mehr AWT, Swing, JavaFX & SWT 13
B Event Handling MouseListener Behält seine Variablen, auch wenn ich ein neus Objekt erstelle AWT, Swing, JavaFX & SWT 2
D Swing &MouseListener in einem JFrame, sinnig? AWT, Swing, JavaFX & SWT 11
U MouselIstener zu JFrame AWT, Swing, JavaFX & SWT 6
F Swing MouseListener im JPanel AWT, Swing, JavaFX & SWT 3
J Swing Button mit JTable und MouseListener AWT, Swing, JavaFX & SWT 8
F JPanel + MouseListener AWT, Swing, JavaFX & SWT 5
JavaInBrain Swing Rückgabe aus MouseListener-Klasse AWT, Swing, JavaFX & SWT 3
A SWT SWT Scale und MouseListener AWT, Swing, JavaFX & SWT 7
J MouseListener und rechte Maustaste AWT, Swing, JavaFX & SWT 3
R MouseListener auf JPanel AWT, Swing, JavaFX & SWT 3
Q Swing MouseListener auf JTable geht nicht AWT, Swing, JavaFX & SWT 2
J Swing Einbau MouseListener in JPanel AWT, Swing, JavaFX & SWT 3
N Mit MouseListener X-Y Angaben vom Bild erfahren AWT, Swing, JavaFX & SWT 3
T MouseListener an Ecken von Polygonen hinzufügen AWT, Swing, JavaFX & SWT 5
H Swing JPanel in JTable mit MouseListener AWT, Swing, JavaFX & SWT 3
A Individueller MouseListener ? AWT, Swing, JavaFX & SWT 7
B MouseListener im Renderer einer JComboBox AWT, Swing, JavaFX & SWT 3
P AWT MouseListener unklare abhandlung von Events AWT, Swing, JavaFX & SWT 3
M MouseListener/MouseMotionListener AWT, Swing, JavaFX & SWT 2
njans SWT MouseListener exited AWT, Swing, JavaFX & SWT 4
danx066 MouseListener macht was er will AWT, Swing, JavaFX & SWT 14
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
P JLabel Farbe/Bild ändern aus MouseListener heraus AWT, Swing, JavaFX & SWT 3
U Swing Generierung mehrerer Kreise per MouseListener AWT, Swing, JavaFX & SWT 16
Semox Swing JApplet: Problem MouseListener Anmeldung AWT, Swing, JavaFX & SWT 3
C JTappedPane Mouselistener auf Überschrift Registerkarte AWT, Swing, JavaFX & SWT 2
M MouseListener AWT, Swing, JavaFX & SWT 3
K AWT MouseListener linke und rechte Maustaste AWT, Swing, JavaFX & SWT 5
C Swing MouseListener Doppelklick-Geschwindigkeit AWT, Swing, JavaFX & SWT 4
N Swing MouseListener in JTable AWT, Swing, JavaFX & SWT 4
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
Developer_X AWT Component added keinen MouseListener AWT, Swing, JavaFX & SWT 7
R MouseListener wird nicht aufgerufen AWT, Swing, JavaFX & SWT 3
P JComboBox und MouseListener AWT, Swing, JavaFX & SWT 2
W MouseListener im editable ComboBox AWT, Swing, JavaFX & SWT 14
raptorrs Swing MouseListener reagiert nicht auf Instanz einer JTable AWT, Swing, JavaFX & SWT 6
multiholle Swing Mouselistener auf Parentpanel immer aktiv AWT, Swing, JavaFX & SWT 7
C MouseListener und ActionListener kombinieren AWT, Swing, JavaFX & SWT 17
M Komponenten einer unbestimmten Anzahl und MouseListener AWT, Swing, JavaFX & SWT 4
A MouseListener funktionert nie AWT, Swing, JavaFX & SWT 12
C Probleme mit Größe und mit MouseListener AWT, Swing, JavaFX & SWT 2
W MouseListener für jede Zelle einer JTable AWT, Swing, JavaFX & SWT 4
E MouseListener Problem AWT, Swing, JavaFX & SWT 4
D jButton mit ImageIcon & MouseListener AWT, Swing, JavaFX & SWT 5
S MouseListener zurückverfolgung auf element. AWT, Swing, JavaFX & SWT 7
B MouseListener / doppelklick geht net AWT, Swing, JavaFX & SWT 16
M JCheckBox Standard MouseListener entfernen AWT, Swing, JavaFX & SWT 13
hdi Wie mach ich diesen MouseListener AWT, Swing, JavaFX & SWT 4
G MouseListener & KeyListener AWT, Swing, JavaFX & SWT 4
H JComboBox reagiert nicht auf MouseListener AWT, Swing, JavaFX & SWT 5
2 Mouselistener AWT, Swing, JavaFX & SWT 2
W MouseListener, getClickCount und Doppelklick AWT, Swing, JavaFX & SWT 6
S swing komponenten mit mouselistener rotieren AWT, Swing, JavaFX & SWT 15
G JFrame,JLabel,MouseListener AWT, Swing, JavaFX & SWT 6
F Wie MouseListener bei TableModel anmelden? AWT, Swing, JavaFX & SWT 3
V Frage zu MouseListener --> mousePressed() AWT, Swing, JavaFX & SWT 5
C MouseListener für Spalte eines JTables AWT, Swing, JavaFX & SWT 4
K Problem mit 2 MouseListener. AWT, Swing, JavaFX & SWT 3
M MouseMotionListener oder mouseListener AWT, Swing, JavaFX & SWT 6
T JComboBox und MouseListener AWT, Swing, JavaFX & SWT 11
F MouseListener - Unhandled IOException AWT, Swing, JavaFX & SWT 5
padde479 Statusleiste mit MouseListener aktualisieren AWT, Swing, JavaFX & SWT 3
L Problem mit MouseListener, AdjustmentListener AWT, Swing, JavaFX & SWT 6
T MouseListener Problem AWT, Swing, JavaFX & SWT 3
F Mouselistener wird wiederholt aufgerufen AWT, Swing, JavaFX & SWT 3
G Frage zu MouseListener und speichern des Wertes (reflektion? AWT, Swing, JavaFX & SWT 6
B frage zu MouseListener AWT, Swing, JavaFX & SWT 5
O MouseListener - Wert-Übergabe AWT, Swing, JavaFX & SWT 3
W JPanel, JLabel und MouseListener -> auf clicks reagieren AWT, Swing, JavaFX & SWT 5
S MouseListener auf einem einzelnen Tab setzen AWT, Swing, JavaFX & SWT 3
B MouseListener & Fenster schliessen AWT, Swing, JavaFX & SWT 3
G MouseListener AWT, Swing, JavaFX & SWT 4
G Tooltip sperrt MouseListener? AWT, Swing, JavaFX & SWT 6
S JComboBox und MouseListener AWT, Swing, JavaFX & SWT 5
D Koordinaten der Bildschirmposition auslesen (MouseListener?) AWT, Swing, JavaFX & SWT 7
A Klassenübergreifend MouseListener verwenden AWT, Swing, JavaFX & SWT 14
N "globaler" MouseListener (+MouseMotionListener) AWT, Swing, JavaFX & SWT 4
M ToolTipText für JTable mit MouseListener ohne anklicken? AWT, Swing, JavaFX & SWT 7
A MouseListener auf Bild legen ? AWT, Swing, JavaFX & SWT 16
S Mouselistener erzeugt kein Event in einem Menuitem AWT, Swing, JavaFX & SWT 2
J MouseListener AWT, Swing, JavaFX & SWT 3
A JPanels in JPanel und MouseListener AWT, Swing, JavaFX & SWT 3
C Mehrere MouseListener? AWT, Swing, JavaFX & SWT 7
U Keylistener und Mouselistener AWT, Swing, JavaFX & SWT 2
L Event-handling, MouseListener AWT, Swing, JavaFX & SWT 5
T Problem mit MouseListener bei JButton AWT, Swing, JavaFX & SWT 5
K mein keyListener scheint Konflict haben mit mouseListener AWT, Swing, JavaFX & SWT 6
G Problem mit MouseListener AWT, Swing, JavaFX & SWT 9
C Default table model aktualisieren AWT, Swing, JavaFX & SWT 7
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14

Ähnliche Java Themen

Neue Themen


Oben