我创建了一个示例应用程序,希望在其中进行滚动,但无法实现所需的输出。
我已经尝试了以下代码内部绘制方法>>>>
g.translate(x,y);
并在keydown和keyup事件中传递变量"y"的值。
有人能帮我做这件事吗?
最简单的方法(尽管占用大量内存)是使用MutableImage,并用负y坐标绘制它。
可变图像只是一个新的图像(w,h)
然后使用myImage.getGraphics()
获取其Graphics上下文,并使用该Graphics对象进行绘制。它充当屏幕外的缓冲区。
比在油漆(图形g),你调用:
g.drawImage(0,y,...);
在每个绘制系统调用上循环递减y
(不要阻止绘制!-每个调用都是一帧,并且您正在进行逐帧动画
从另一个线程执行动画循环,在那里减少y,然后调用repaint()和sleep)。
您是否尝试过在keyUP中递减Y的值并调用repaint()
方法,也使用keyDown执行相同操作,但现在Y的值将递减并调用repaint()
方法。
使用g.translate(x, changingYvalue);
试试这个。
我认为滚动条应该在paint
方法内部绘制。当单击滚动条的箭头时,您实现了keyReleased
方法。为了实现scrolling
,我更喜欢调用repaint();
,并且我将使用布尔值或某种其他类型的专用variable
来管理paint
方法。