Обновлять JLabel каждые X секунд из ArrayList <Список> - Java

У меня есть простая Java-программа, которая читает текстовый файл, разделяет его на "" (пробелы), отображает первое слово, ждет 2 секунды, отображает следующее ... и т. Д ... Я хотел бы сделать это весной или какой-то другой графический интерфейс.

Любые предложения о том, как я могу легко обновить слова с весны? Перебирай мой список и используй setText ();

Мне не повезло. Я использую этот метод для печати своих слов в консоли и добавил к нему JFrame ... Прекрасно работает в консоли, но выдает бесконечный jframe. Я нашел большую часть этого онлайн.

    private void printWords() {
        for (int i = 0; i < words.size(); i++) {
            //How many words?
            //System.out.print(words.size());
            //print each word on a new line...
            Word w = words.get(i);
            System.out.println(w.name);

            //pause between each word.
            try{
                Thread.sleep(500);
            } 
            catch(InterruptedException e){
                e.printStackTrace();
            }
         JFrame frame = new JFrame("Run Text File"); 
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
         JLabel textLabel = new JLabel(w.name,SwingConstants.CENTER);
         textLabel.setPreferredSize(new Dimension(300, 100)); 
         frame.getContentPane().add(textLabel, BorderLayout.CENTER);
        //Display the window. frame.setLocationRelativeTo(null); 
         frame.pack(); 
         frame.setVisible(true);
        }
    }

У меня есть окно, которое создается с помощью JFrame и JLable, однако я бы хотел, чтобы статический текст был динамическим, а не загружал новое весеннее окно. Я хотел бы, чтобы это вспыхнуло слово, исчезнуть, мигнуть слово исчезнуть.

Любые предложения о том, как обновить JLabel? Что-то с repaint ()? Я рисую бланк.

Спасибо!

ОБНОВИТЬ: С помощью приведенных ниже добрых людей я получил его для правильной печати на консоли. Вот мой метод печати:

private void printWords() {
            final Timer timer = new Timer(500, null);
            ActionListener listener = new ActionListener() {
                private Iterator<Word> w = words.iterator();
                @Override 
                public void actionPerformed(ActionEvent e) {
                    if (w.hasNext()) {
                        _textField.setText(w.next().getName());
                        //Prints to Console just Fine...
                        //System.out.println(w.next().getName());
                    }
                    else {
                        timer.stop();
                    }
                }
            };
            timer.addActionListener(listener);
            timer.start();

    }

Тем не менее, это не обновление этикетки? Мой конструктор выглядит так:

public TimeThis() {

    _textField = new JTextField(5);
    _textField.setEditable(false);
    _textField.setFont(new Font("sansserif", Font.PLAIN, 30));

    JPanel content = new JPanel();
    content.setLayout(new FlowLayout());
    content.add(_textField); 

    this.setContentPane(content);
    this.setTitle("Swing Timer");
    this.pack();
    this.setLocationRelativeTo(null);
    this.setResizable(false);
    //_textField.setText("loading...");

}

Как добраться ... Я опубликую исправление, как только я или кто-нибудь, кто мне поможет, поймете, что это работает Еще раз спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос