我已经创建了一个示例应用程序,我想要滚动,但我无法实现所需的输出。
我在paint方法中尝试了以下代码>>>>>
g.translate(x,y);
并在keydown和keyup事件中传递变量'y'的值。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
最简单的方法(尽管内存密集)是使用MutableImage,并使用负y坐标绘制它。
可变图像只是一个新图像(w,h)
然后使用myImage.getGraphics()
获取其Graphics上下文,并使用此Graphics对象进行绘制。它可以作为屏幕外缓冲区。
比在绘画(图形g)中,你打电话:
g.drawImage(0,y,...);
在每个系统调用中循环减少y以进行绘制
(不要阻挡油漆! - 每个调用是一帧,你正在逐帧动画
从另一个线程执行动画循环,减少y,而不是调用repaint()和sleep。。
答案 1 :(得分:1)
您是否尝试过在keyUP中减少Y的值并且调用repaint()
方法也与keyDown一样,但现在Y的值将递减并调用repaint()
方法。
使用g.translate(x, changingYvalue);
试试这个。
答案 2 :(得分:0)
我认为滚动条应该在paint
方法中绘制。并且在单击滚动条的箭头时实现keyReleased
方法。要实现scrolling
我更喜欢调用repaint();
,我将使用布尔值或其他类型的私有paint
来管理variable
方法。