Wie kann ich den Mouselistener eines Panels so einstellen, dass er auch aktiviert wird wenn ich auf eine Tabelle klicke die auf dem Panel liegt. Ist das möglich?
Nein. Die Events werden immer genau an die getroffene Komponente verschickt. Die Eltern bekommen die Events nicht.Wie kann ich den Mouselistener eines Panels so einstellen, dass er auch aktiviert wird wenn ich auf eine Tabelle klicke die auf dem Panel liegt. Ist das möglich?
Wir können den MouseListener ebenfalls an die JTable hängen und das Event an das JPanel weiterleiten, etwa so:Wie kann ich den Mouselistener eines Panels so einstellen, dass er auch aktiviert wird wenn ich auf eine Tabelle klicke die auf dem Panel liegt. Ist das möglich?
public class NewJFrame3 extends JFrame implements MouseListener{
...
jPanel1.addMouseListener(this);
jTable1.setFillsViewportHeight(true);
jTable1.addMouseListener(this);
jTable1.getTableHeader().addMouseListener(this);
...
@Override
public void mousePressed(MouseEvent e) {
if(e.getSource() == jPanel1){
Point loc = e.getLocationOnScreen();
loc.translate(-jPanel1.getLocationOnScreen().x, -jPanel1.getLocationOnScreen().y);
System.out.println("mousePressed " + loc);
}else{
e.setSource(jPanel1);
jPanel1.dispatchEvent(e);
}
}
...
Wir können den MouseListener ebenfalls an die JTable hängen und das Event an das JPanel weiterleiten, etwa so:
if(e.getSource==jTable1 || e.getSource==jPanel1 || e.getSource==IrgeneineComponente)
Der Unterschied ist, daß mit meiner Version alle MouseListener, die am JPanel hängen können, automatisch informiert werden.