получить координаты мыши X, Y относительно кадра - PullRequest
1 голос
/ 17 сентября 2010

У меня есть кнопка, и когда я использую мышь на кнопке, я хочу знать координаты x, y мыши относительно рамки

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

getBounds() дает вам Rectangle с положением и размерами кнопки относительно ее родителя.В моем примере родитель - это JFrame.

public class Click { 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                final JFrame f = new JFrame("Click pos");
                f.setSize(640, 480);

                final JButton b = new JButton("Click Me!");
                b.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        final JButton bb = (JButton) e.getSource();
                        final Rectangle bbox = bb.getBounds();
                        final int x = bbox.x + e.getX();
                        final int y = bbox.y + e.getY();
                        JOptionPane.showMessageDialog(f, "pos: " + x + " " + y);
                    }
                });
                f.getContentPane().add(b, BorderLayout.SOUTH);
                f.setVisible(true);
            }
        });
    }
}

Редактировать:
С помощью вспомогательных методов из SwingUtilities метод mouseClicked становится намного проще.И вы получите правильные координаты независимо от того, сколько контейнеров находится между JFrame и JButton.Я не знал о них.

                    final JButton bb = (JButton) e.getSource();
                    Point p = SwingUtilities.convertPoint(bb, e.getPoint(), f);
                    JOptionPane.showMessageDialog(f, p);
0 голосов
/ 17 сентября 2010

зарегистрируйте MouseListener и реализуйте соответствующие события. MouseEvent имеет методы getX и getY, которые могут определить положение мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...