Я хочу сделать программу с графическим интерфейсом Java. он содержит jScrollpane, который содержит большую панель jPanel. сама jPanel содержит множество компонентов Swing, таких как jButtons, jPanels и... что я хочу, так это то, что когда пользователь нажимает на jButton, jScrollpane начинает прокручиваться до конца большой панели с постоянной скоростью. что-то вроде ОС Android. как я знаю, я должен знать, как сделать анимацию с помощью java, чтобы решить эту проблему, я пытался решить это просто с помощью потоков, но это невозможно, и кажется, что свинг требует более конкретного использования потоков... не могли бы вы дать мне свой идеи? это связано с 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();
проблема сейчас в том, что анимация не сделана плавно. я имею в виду, что он плавно прокручивается, но когда он достигает определенного места, его скорость снижается. Зачем?