2012-04-05 5 views
1

Мне интересно узнать, как сделать прокручиваемый текст. Так же, как текст, который можно прокручивать справа налево. Как оживить текст в графическом интерфейсе Java?Анимация/прокрутка текста

+0

AFAIK, Java не обязательно предназначен для создания текстовых анимаций. Что вы можете сделать, так это применить «AffineTransforms» к «Label», но я действительно сомневаюсь, что это будет выглядеть хорошо. Возможно, есть несколько библиотек для поддержки такого рода вещей. – posdef

+0

http://www.java2s.com/Code/Java/Threads/Swingandthreadsscrolltext.htm –

+0

Вы хотите переместить текст в JTextField, в JLabel или переместить текстовое поле/метку или перенести текст на панель? В последнем случае: graphics.drawString - это то, что вам нужно. –

ответ

5

может быть, не ответ на OP, но я не вижу причин, очень просто при помощи орудий Swing Timer, (может быть с полупрозрачными контейнером) и положить туда JLabel (обновления к JLabel может быть от Array из Chars в избегает изменения размера контейнера), например

import java.awt.Color; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JWindow; 
import javax.swing.Timer; 

public class SlideTextSwing { 

    private JWindow window = new JWindow(); 
    private JLabel label = new JLabel("Slide Text Swing, Slide Text Swing, .........."); 
    private JPanel windowContents = new JPanel(); 

    public SlideTextSwing() { 
     windowContents.add(label); 
     window.add(windowContents); 
     window.pack(); 
     window.setLocationRelativeTo(null); 
     final int desiredWidth = window.getWidth(); 
     window.getContentPane().setLayout(null); 
     window.setSize(0, window.getHeight()); 
     window.setVisible(true); 
     Timer timer = new Timer(20, new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       int newWidth = Math.min(window.getWidth() + 1, desiredWidth); 
       window.setSize(newWidth, window.getHeight()); 
       windowContents.setLocation(newWidth - desiredWidth, 0); 
       if (newWidth >= desiredWidth) { 
        ((Timer) e.getSource()).stop(); 
        label.setForeground(Color.red); 
        mainKill(); 
       } 
      } 
     }); 
     timer.start(); 
    } 

    public void mainKill() { 
     Timer timer = new Timer(500, new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       System.exit(0); 
      } 
     }); 
     timer.start(); 
    } 

    public static void main(String args[]) { 
     EventQueue.invokeLater(new Runnable() { 

      public void run() { 
       SlideTextSwing windowTest = new SlideTextSwing(); 
      } 
     }); 
    } 
} 
+1

Несколько связанных подходов показаны [здесь] (http://stackoverflow.com/q/3617326/230513). – trashgod

+0

спасибо, что отредактировал мой вопрос. –

+0

спасибо за синтаксис, это помогает мне. но я хочу сделать прокрутку в JLabel с помощью GUI Java. –

Смежные вопросы