Marquee Panelを使用することができます。このコードでは実際のコンポーネントが使用されるため、コンポーネントに追加するリスナーを追加して反応させる必要があります。
編集:
は
おっと、私は私のコードは動作しません直接のMouseListenerを使用してそのコンポーネントをペイントするGraphics.translateを(...)メソッドを使用して、私が考えていたかわかりません。
EDIT2:
たぶん、次のコードが役立ちます。ただ、MarqueePanelクラスにメソッドを追加します。
public Component getComponentAtPoint(Point p)
{
int translatedX = p.x + scrollOffset;
if (isWrap())
{
int preferredWidth = super.getPreferredSize().width;
preferredWidth += getWrapAmount();
translatedX = translatedX % preferredWidth;
}
Point translated = new Point(translatedX, p.y);
for (Component c: getComponents())
{
if (c.getBounds().contains(translated))
return c;
}
return null;
}
は今、あなたはMarqueePanelにするMouseListenerを追加したMouseEventがために生成されたコンポーネントを決定するために、このメソッドを呼び出すことができます。どのコンポーネントがクリックされたか分かると、そのコンポーネントのアクションを手動で呼び出す必要があります。または、MouseEventをコンポーネントに再ディスパッチすることもできます。パネルがソースではなく、コンポーネントをイベントのソースにするには、MouseEventを再作成する必要があります。また、イベントのX/Y位置を、パネルではなくコンポーネントに関連させて隠す必要があります。 SwingUtilsクラスはこれを助けます。
私はmissunderstood – mKorbel