Jpanel java
Автор Alyona Gvozdeva задал вопрос в разделе Другие языки и технологии
Как узнать координаты клика мышки на экране JPanel в Java? и получил лучший ответ
Ответ от Alexey[гуру]
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestMouseEvents implements Runnable, MouseListener {
public void run() {
JFrame frame = new JFrame();
frame.setTitle("Test mouse events");
// при закрытии окна выйти
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(400, 200));
panel.addMouseListener(this);
Container cp = frame.getContentPane();
cp.setLayout(new BorderLayout());
cp.add(panel, BorderLayout.CENTER);
// пакуем
frame.pack();
// показываем
frame.setVisible(true);
}
/////////////
// MouseEvent methods
public void mouseClicked(MouseEvent e) {
System.out.println("mouseClicked");
printMouseEvent(e);
}
public void mouseEntered(MouseEvent e) {
System.out.println("mouseEntered");
printMouseEvent(e);
}
public void mouseExited(MouseEvent e) {
System.out.println("mouseExited");
printMouseEvent(e);
}
public void mousePressed(MouseEvent e) {
System.out.println("mousePressed");
printMouseEvent(e);
}
public void mouseReleased(MouseEvent e) {
System.out.println("mouseReleased");
printMouseEvent(e);
}
//////////////
// util methods
private void printMouseEvent(MouseEvent e) {
int button = e.getButton();
switch (button) {
case MouseEvent.BUTTON1: {
System.out.println("Button1");
break;
}
case MouseEvent.BUTTON2: {
System.out.println("Button2");
break;
}
case MouseEvent.BUTTON3: {
System.out.println("Button3");
break;
}
default: {
break;
}
}
int clicks = e.getClickCount();
System.out.println("clicks: " + clicks);
Point p = e.getPoint();
System.out.println("point: " + p);
}
public static void main(String[] args) {
TestMouseEvents entryPoint = new TestMouseEvents();
// Выполнить в EDT
SwingUtilities.invokeLater(entryPoint);
}
}