Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > бегущая строка


Автор: cornflyer 5.10.2006, 13:53
как на java реализовать плавно бегущую строку текста? причем, чтобы юзер мог менять скорость  и сам текст

Автор: LSD 5.10.2006, 14:18
Идея такая:
Код
class CreepingLine extends JComponent
{
  private String text;
  private int offset;

  public CreepingLine(String text)
  {
    setText(text);
  }

  public String getText()
  {
    return text;
  }

  public void setText(String text)
  {
    this.text = text;
  }

  protected void paintComponent(Graphics g)
  {
    super.paintComponent(g);
    g.setFont(getFont());
    g.setColor(getForeground());
    int height = g.getFontMetrics().getHeight();
    g.drawString(text, 0 - offset, height);
  }

  public static void main(String[] args) throws Exception
  {
    CreepingLine creepingLine = new CreepingLine("А я достаю из широких штанин пиратам назло, словно в shop’e я - смотрите, завидуйте, DOS 3.1, Лицензионная копия!");

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.getContentPane().add(creepingLine);
    frame.setSize(400, 300);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

    for(int i = 0; i < 1000; i++)
    {
      creepingLine.offset = i;
      creepingLine.repaint();
      Thread.sleep(125);
    }
  }
}

но реализацию еще надо дорабатывать.

Автор: cornflyer 5.10.2006, 14:32
в смысле дорабатывать? текст будет плавно перемещаца?

Автор: LSD 5.10.2006, 15:51
Цитата(cornflyer @  5.10.2006,  15:32 Найти цитируемый пост)
в смысле дорабатывать?

Надо добавить корректное вычисление prefered/minimum size, добавить автоматическое продвижение строки (сейчас ее надо двигать вручную).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)