Массив: Реализовать анимацию для заданного объекта... - Java
Формулировка задачи:
Доброго времени суток! Прошу немного мне помочь, сам с проблемой справиться не могу.
Учусь в универе и дано не совсем обычное задание. Есть char массив, в нем отрисована картинка. Как это выглядит видно на первом скрине. Задача: реализовать анимацию для отдельного объекта. Для шляпы, к примеру. С поставленной задачей я справился, но беда в том, что в Java нет очистки экрана, как я понял. И вместо нормальной анимации я получаю просто 30 выведенных на экран массивов, с разными положениями шляпы.
Вопрос: знающие люди, подскажите, пожалуйста, как и куда можно выгружать этот массив, чтобы он корректно отрисовывался и была возможность очистки экрана? Пробовал JTeaxtArea, но что-то пошло не так. С GUI ранее в Java не работал, так что не пинайте сильно.
Решение задачи: «Массив: Реализовать анимацию для заданного объекта...»
textual
Листинг программы
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ShapeFrame extends JFrame { private JButton jButton = new JButton("Text"); private int count = 0; Timer timer = new Timer(50, new ActionListener() { private boolean direction = false; @Override public void actionPerformed(ActionEvent e) { if (!direction) { if (count++ > 20) { direction = true; } } else { if (count-- < 1) { direction = false; } } fillTextArea(); repaint(); } }); private JTextArea jTextArea = new JTextArea(); private List<String> list = new ArrayList<>(); public void fillTextArea() { jTextArea.setText(""); String offset = ""; for (int i = 0; i < count ; i++) { offset += " "; } for (String s : list) { jTextArea.append(offset + s + "\n"); } } public ShapeFrame() throws HeadlessException { jButton.addActionListener(new ActionListener() { private boolean flag = false; String c = "*"; @Override public void actionPerformed(ActionEvent e) { String cOld; if (c.equals("*")) { c = String.valueOf('+'); cOld = "\\*"; } else { c = String.valueOf('*'); cOld = "\\+"; } // System.out.println(list); Iterator<String> it = list.iterator(); for (int i = 0; i < list.size(); i++) { list.set(i, list.get(i).replaceAll(cOld, c)); } } }); add(jButton, BorderLayout.NORTH); count = 0; String offset = String.format("%-20s", " "); list.add(offset); list.add(offset); list.add(offset + " * "); list.add(offset + " *** "); list.add(offset + " ******* "); list.add(offset + "*********"); list.add(offset + " ******* "); list.add(offset + " ***** "); list.add(offset + "** * **"); list.add(offset + " ***** "); jTextArea.setFont(new Font("Courier New", Font.PLAIN, 12)); for (String s : list) { jTextArea.append(s + "\n"); } add(jTextArea); timer.start(); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { ShapeFrame shapeFrame = new ShapeFrame(); shapeFrame.setSize(500, 400); shapeFrame.setVisible(true); } }); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д