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:
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);
}
}
}
Ich hab es auch 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. Hat da jemand eine Idee? Danke schonmal im Voraus!