gpt4 book ai didi

Java:ScrollablePicture 让它以给定的坐标滚动

转载 作者:行者123 更新时间:2023-11-30 07:29:31 25 4
gpt4 key购买 nike

我正在尝试改编以下示例: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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com