我不知道如何为这个做一个好的标题。现在我们开始:
我试图得到准确的鼠标位置,当我点击一个标签,使用一个MouseAdapter我添加到我的JScrollPane的JViewPort我的面板本身被添加到JScrollPane中。
当我试图获得鼠标位置的坐标时,总是相对于可见的面板区域。它不包括由于滚动而不可见的区域。
我不知道我是否说得很清楚,我希望如此。已经尝试使用getMousePosition从JViewPort和JScrollPane,也没有工作。提前感谢!!下面是一些代码:框架内部有面板的结构…
public GraphViewer(ArrayList<TimeSlot> graph) throws HeadlessException {
final MyCustomPanel panel = new MyCustomPanel(graph);
panel.setPreferredSize(panel.getLargestSize());
scroll = new JScrollPane(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
add(scroll, BorderLayout.CENTER);
JViewport v = scroll.getViewport();
ViewportDragScrollListener l = new ViewportDragScrollListener(panel);
v.addMouseMotionListener(l);
v.addMouseListener(l);
}
如何将JViewport.getViewPosition()添加到从getMousePosition()获得的坐标?
evento mouseClicked...
x= event.getX();
luego:
Point pos = scrollImagen.getViewport().getViewPosition();
pos.translate(x, y);
...
double nuevaPosx = pos.getX();