У меня есть простая 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 ()? Я рисую бланк.
Спасибо!
UPDATE:
С помощью приведенных ниже добрых людей я получил его для правильной печати на консоли. Вот мой метод печати:
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...");
}
Как добраться ... Я опубликую исправление, как только я или кто-нибудь, кто мне поможет, поймете, как оно работает. Еще раз спасибо!