-
Bug
-
Resolution: Fixed
-
P4
-
7
-
b80
-
generic
-
windows
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8135893 | emb-9 | Sergey Bylokhov | P4 | Resolved | Fixed | team |
Run the following test on Windows and check coordinates (printed to stdout) for mouse pressed and mouse wheel events. If you see (0, 0) is always returned for event.getLocationOnScreen(), the bug is reproduced. On linux/solaris the test works correctly.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MouseWheelXY {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MouseWheelXY().createGUI();
}
});
}
private MouseAdapter mouseListener = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
printEvent(e, "Button pressed");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
printEvent(e, "Wheel moved");
}
};
private void createGUI() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel labelPanel = new JPanel(new GridLayout(0, 1));
frame.add(labelPanel);
for (int index = 0; index < 10; index++) {
String name = "Label " + index;
JLabel label = new JLabel(name);
label.setName(name);
label.addMouseWheelListener(mouseListener);
label.addMouseListener(mouseListener);
labelPanel.add(label);
}
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private void printEvent(MouseEvent e, String message) {
System.out.println(message);
System.out.println("Name " + e.getComponent().getName());
System.out.println("getPoint() " + e.getPoint());
System.out.println("getLocationOnScreen() " + e.getLocationOnScreen());
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MouseWheelXY {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MouseWheelXY().createGUI();
}
});
}
private MouseAdapter mouseListener = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
printEvent(e, "Button pressed");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
printEvent(e, "Wheel moved");
}
};
private void createGUI() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel labelPanel = new JPanel(new GridLayout(0, 1));
frame.add(labelPanel);
for (int index = 0; index < 10; index++) {
String name = "Label " + index;
JLabel label = new JLabel(name);
label.setName(name);
label.addMouseWheelListener(mouseListener);
label.addMouseListener(mouseListener);
labelPanel.add(label);
}
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private void printEvent(MouseEvent e, String message) {
System.out.println(message);
System.out.println("Name " + e.getComponent().getName());
System.out.println("getPoint() " + e.getPoint());
System.out.println("getLocationOnScreen() " + e.getLocationOnScreen());
}
}
- backported by
-
JDK-8135893 getLocationOnScreen() always returns (0, 0) for mouse wheel events
-
- Resolved
-