0

我不知道如何为此取一个好标题..但是我们开始吧:

我试图在单击标签时获得准确的鼠标位置,使用添加到 JScrollPane 的 JViewPort 中的 MouseAdapter 我的面板本身已添加到 JScrollPane 内。

当我尝试获取鼠标位置的坐标时,总是相对于可见的面板区域..它不计算不可见的区域,因为滚动..

我不知道如果我说清楚了,我希望如此.. 已经尝试使用来自 JViewPort 和 JScrollPane 的 getMousePosition 并且也没有工作.. 非常感谢!

这是一些代码:内部有面板的框架的构造..

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);
}
4

2 回答 2

1

将 JViewport.getViewPosition() 添加到从 getMousePosition() 获得的坐标中怎么样?

于 2013-03-28T12:16:18.667 回答
0
evento mouseClicked...

x= event.getX();

luego:

Point pos =    scrollImagen.getViewport().getViewPosition();
pos.translate(x, y);
...
double nuevaPosx = pos.getX();
于 2013-06-06T20:50:18.880 回答