Hi alle,
ich habe ein kleines Problem mit dem dispatchen von Events.
In einem JFrame habe das Glasspane durch ein JPanel ersetzt. Diesem Panel wurden 3 MouseListener geadded.
MouseMotionListener, MouseWheelListener , MouseListener
Damit fängt das Glasspane alle MouseEvents ab. Es wurden alle Methoden der Listener überschrieben um Komponenten auf dem GlassPane selektieren zu können.
Es gibt aber Situationen bei denen ich die MouseEvents an Komponenten unter dem Glasspane weiterleite. Was auch funktioniert. (Hier der Code zum dispatchen der events)
Allerdings habe ich damit ein Problem beim draggen.
Wenn ich z.B. eine Scrollbar bewegen möchte und mit der Maus aus den Grenzen der Scrollbar komme bleibt die Scrollbar stehen. (die Grenzen sind die Bounds der Scrollbar) Sobald man wieder innerhalb der Grenzen ist bewegt sich die Scrollbar wieder.
Jetzt mein Problem. Wie kann ich dem entgegen wirken. Also das normale verhalten wieder erreichen.
Danke schon mal im Voraus
mfg
Michael Rehberg
ich habe ein kleines Problem mit dem dispatchen von Events.
In einem JFrame habe das Glasspane durch ein JPanel ersetzt. Diesem Panel wurden 3 MouseListener geadded.
MouseMotionListener, MouseWheelListener , MouseListener
Damit fängt das Glasspane alle MouseEvents ab. Es wurden alle Methoden der Listener überschrieben um Komponenten auf dem GlassPane selektieren zu können.
Es gibt aber Situationen bei denen ich die MouseEvents an Komponenten unter dem Glasspane weiterleite. Was auch funktioniert. (Hier der Code zum dispatchen der events)
Code:
private void redispatchMouseEvent(MouseEvent e, boolean repaint)
{
Point glassPanePoint = e.getPoint();
Container container = content;
Point containerPoint = SwingUtilities.convertPoint(this,
glassPanePoint, content);
if (false)
{ //we're not in the content pane
//Could have special code to handle mouse events over
//the menu bar or non-system window decorations, such as
//the ones provided by the Java look and feel.
} else
{
//The mouse event is probably over the content pane.
//Find out exactly which component it's over.
Component component = SwingUtilities.getDeepestComponentAt(
container, containerPoint.x, containerPoint.y);
//System.out.println("component" + component.toString());
if (component != null)
{
Point componentPoint = SwingUtilities.convertPoint(this,
glassPanePoint, component);
//System.out.println(componentPoint.getX() + " "
// + componentPoint.getY());
component
.dispatchEvent(new MouseEvent(component, e.getID(), e
.getWhen(), e.getModifiers(), componentPoint.x,
componentPoint.y, e.getClickCount(), e
.isPopupTrigger()));
}
}
}
Allerdings habe ich damit ein Problem beim draggen.
Wenn ich z.B. eine Scrollbar bewegen möchte und mit der Maus aus den Grenzen der Scrollbar komme bleibt die Scrollbar stehen. (die Grenzen sind die Bounds der Scrollbar) Sobald man wieder innerhalb der Grenzen ist bewegt sich die Scrollbar wieder.
Jetzt mein Problem. Wie kann ich dem entgegen wirken. Also das normale verhalten wieder erreichen.
Danke schon mal im Voraus
mfg
Michael Rehberg