使用包含图像的JLabel自动滚动

时间:2014-05-18 17:06:11

标签: java swing jscrollpane jlabel

我想尝试一些东西,但我不知道如何解决这个问题,并且不确定它是否可能。

我使用GridLayout获得了JLabel的JPanel。然后将此JPanel添加到JScrollPane。

如果JLabel中有图像,则为一个。该图像应该向我显示程序中的角色。我只是一个JLabal所以我可以得到它的位置。所以基本上当我想移动角色时,我从当前的JLabel中删除图像并将其添加到下一个JLabel中。我知道这可能是有史以来最糟糕的方法,但我是新手,我所知道的只是Java,我有一个截止日期,并没有想到用Java学习游戏开发。

无论如何,因为我正在使用JScrollPane,所以我希望程序能够在无法再看到带有图像的JLabel时自动滚动。因此,当角色移动时,JSCrollPane正在滚动,所以我不必滚动到它。它适合我。就像一台摄像机一样,看着它的发展方向。

这可能吗?

非常感谢!!

1 个答案:

答案 0 :(得分:0)

  

我知道这可能是有史以来最糟糕的做法

你会得到非常糟糕的动作,因为角色一次会跳过很多像素(取决于图像的大小)。

  

因此,当角色移动时,JSCrollPane会滚动,所以我不必滚动到它。

将图标添加到其他标签后,您可以使用标签的scrollRectToVisible(..)方法。您需要使Rectangle大小等于scrollpanes视口的大小,以强制视口每次都滚动。因此,您需要计算x / y位置以确保标签在视口中保持居中。