swing Java:ScrollablePicture使其在给定坐标下滚动
我正在尝试改编以下示例:http://docs.oracle.com/javase/tutorial/uiswing/examples/zipfiles/components-ScrollDemoProject.zip
我想做的是允许用户在图片上导航到他们自己选择的坐标(但不是通过鼠标)。所以你有一张大图,只显示了一小部分,图片上方的窗口会移动。这在使用鼠标时有效(参见oracle示例)。但我想用用户选择的坐标来实现这一点
在ScrollablePicture类中,可以通过拖动鼠标移动图片:
public void mouseDragged(MouseEvent e) {
Rectangle r = new Rectangle(e.getX(), e.getY(), 1, 1);
scrollRectToVisible(r);
}
我也尝试过这样做,所以我在mouseDragged函数下面添加了这个方法:
public void moveMap(float X, float Y){
Rectangle r = new Rectangle((int)X,(int) Y, 1, 1);
System.err.println("Scroll to "+ r.x);
scrollRectToVisible(r);
}
当我查看我的输出时,我可以看到我得到了方法中的坐标。但是窗口没有滚动。我现在的问题是:为什么它不滚动?我该如何解决这个问题
附言:这与价值观无关。因为我尝试了两个函数中的固定数字,例如:
Rectangle r = new Rectangle(2000,2000, 1, 1);
它在mouseDragged函数中有效,但在moveMap函数中无效
# 1 楼答案
你可以用坐标从
JViewPort
移动,那么你的代码应该是# 2 楼答案
你的代码运行良好
以下是测试方法:
在类
ScrollDemo
中制作图片public
:在
createAndShowGUI()
中,将变量JComponent newContentPane
的类型更改为:在
frame.setVisible(true);
之后调用moveMap
方法:现在你可以看到图片被向下滚动,所以
(1, 250)
处的像素可见:左侧:没有
moveMap(1, 250);
调用。右方:有电话。-申请开始后的那一刻