我想做一个java GUI程序。它包含一个 jScrollpane,其中包含一个大 jPanel。jPanel 它本身包含许多 Swing 组件,例如 jButtons、jPanels 和...。我想要的是当用户单击 jButton 时,jScrollpane 开始以恒定速度滚动到大面板的末尾。类似安卓操作系统的东西。我知道我必须知道如何用java制作动画来解决这个问题,我试图用线程简单地解决这个问题,但这是不可能的,而且似乎swing需要更具体地使用线程......你能给我你的吗想法?它与 Swingworker 有关吗?真的很关键...:(
更新:我试图用计时器类解决这个问题:
ActionListener action = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if (mainContainerScrollPane.getHorizontalScrollBar().getValue() == mainContainerScrollPane.getHorizontalScrollBar().getMaximum())
timer.stop();
mainContainerScrollPane.getHorizontalScrollBar().setValue(mainContainerScrollPane.getHorizontalScrollBar().getValue() + 5);
mainContainerScrollPane.repaint();
}
};
timer = new Timer(10, action);
timer.start();
现在的问题是动画没有顺利完成。我的意思是它可以平滑滚动,但是当它到达特定位置时,它的速度会下降。为什么?