import javax.swing.*; import javax.swing.plaf.*; import java.lang.reflect.*; public class Ticker extends JComponent { private TickerModel model; public Ticker() { TickerModel tm = new DefaultTickerModel(this); ComponentUI ui = new TickerUI(); setUI(ui); model = tm; } public void addTickerListener(TickerListener tl) { model.addTickerListener(tl); } public void removeTickerListener(TickerListener tl) { model.removeTickerListener(tl); } public void setDelay(int secondes) { model.setDelay(secondes); } public void start() { model.start(); } public void updateUI() { String n = UIManager.getLookAndFeel().getID(); n = n+"TickerUI"; Class<?> cl = null; try { cl = Class.forName(n); } catch(Exception e) { cl = TickerUI.class; System.out.println("No "+n+" available, defaulted to "+cl); } try { Method m = cl.getDeclaredMethod("createUI"); Object o = m.invoke(cl); setUI((TickerUI)o); repaint(); } catch(Exception e) { System.err.println("Problem while calling createUI for "+n); } } }