Java:ScrollablePicture使其以给定坐标滚动

标签 java swing coordinates jframe scrollable

我正在尝试调整以下示例: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);
}

当我查看输出时,我可以看到我在方法中获得了坐标。但窗口不滚动。我现在的问题是:为什么它不滚动以及如何解决这个问题?

Ps:与数值无关。因为我在两个函数中尝试使用固定数字,例如:

Rectangle r = new Rectangle(2000,2000, 1, 1);

它在 mouseDragged 函数中有效,但在 moveMap 函数中无效

最佳答案

您的代码运行良好。

测试方法如下:

在类ScrollDemo中将图片设置为public:

public ScrollablePicture picture;

createAndShowGUI() 中,将变量 JComponent newContentPane 的类型更改为:

ScrollDemo newContentPane = new ScrollDemo();

frame.setVisible(true); 调用您的 moveMap 方法之后:

frame.setVisible(true);
    
newContentPane.picture.moveMap(1, 250);

现在您可以看到图片向下滚动,因此 (1, 250) 处的像素可见:

enter image description here

左侧:没有 moveMap(1, 250); 调用。右侧:与通话。 - 应用程序启动后的那一刻。

关于Java:ScrollablePicture使其以给定坐标滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432365/

相关文章:

java - 通过坐标访问游戏对象,同时仍然能够轻松移动它们

java - 使用插入排序算法,使用对象数组中的多个字段

java - 无法弄清楚如何使用 Jbutton 调用方法

java - OAuth 签名验证失败

java - 有没有在 JFrame 中生成计时器的方法?

java - 富客户端平台与 JavaFX 2 与 Swing

java - getTableCellRendererComponent 参数的含义

java - JAVA SDK 中不提供 GetCostAndUsageWithResources 方法

javascript - 在 D3 中使用或转换朗伯坐标

java - GPS 坐标未正确存储在从 android 到 php 的数据库中