JavaGUIプログラムを作りたい。大きなjPanelを含むjScrollpaneが含まれています。jPanel自体には、jButtons、jPanelsなどのSwingコンポーネントが多数含まれています。ユーザーがjButtonをクリックすると、jScrollpaneが一定の速度で大きなパネルの最後までスクロールし始めます。アンドロイドOSのようなもの。この問題を解決するには、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();
現在の問題は、アニメーションがスムーズに行われないことです。スムーズにスクロールしますが、特定の場所に到達すると速度が低下します。なぜ?