我目前有一组 TickerSymbol() 对象在我的 Swing JFrame 中滚动屏幕。我不知道如何让它环绕……就逻辑而言。
protected void animate() {
new Timer(TIMER_DELAY, new TimerListener()).start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g.setFont(BG_STRING_FONT);
g.setColor(Color.LIGHT_GRAY);
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
List<TickerSymbol> tickers = ticker.getTickers();
synchronized(tickers){
for(TickerSymbol ts : tickers) {
//Create formatted string with ticker info
// This part works fine
...
}
}
}
private class TimerListener implements ActionListener {
public void actionPerformed(java.awt.event.ActionEvent e) {
//TODO need to make the ticker wrap around rather than hard coding.
if (imgX <= -2000) {
imgX = getWidth();
} else {
imgX -= 1;
}
repaint();
};
}
正如您在上面看到的,我目前已将“imgX”重置为 getWidth() 的位置硬编码。这意味着字符串会将其位置重置到应用程序的右上角。
我尝试使用 Guava 项目中的“Iterables.cycle”,但最终导致内存溢出。
Iterable<TickerSymbol> live = Iterables.cycle(tickers);
while(live.iterator().hasNext()) {
....
任何帮助表示赞赏!