Перерисовать картинку - Java
Формулировка задачи:
У меня есть форма (jFrame). Можно ли без добавления jPanel перерисовывать картинку?
Форма загромождается картинками.
С прямоугольниками например все работает хорошо
Есть ли похожий метод для перерисовки картинок на jFrame?
Или единственный выход создание дополнительного комп-а jPanel?
public class MainForm extends JFrame { public MainForm() throws HeadlessException { //инициализация формы; } Image fish = ImageIO.read(new File("C:\\...\\fish.png")); public void go() { final TimerTask task = new TimerTask() { public void run() { Graphics g = getGraphics(); int x = getMyX();// random x int y = getMyY();// random y synchronized (this){ g.drawImage(fish,x,y,null); } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } repaint(); // ничего не перерисовывает } }; timer = new Timer(); timer.schedule(task, 0, DELAY); } }
g.drawRect(x,y,20,20); Thread.sleep(100); g.clearRect(x,y,20,20); repaint();
Может я не в том направлении копаю?)
Задача: аквариум, динамические (двигающиеся картинки) + статические. Изменение х-к со временем.
Как лучше всего реализовать? Какие компоненты + ф-ции использовать?
Решение задачи: «Перерисовать картинку»
textual
Листинг программы
class MyPanel extends JPanel { private final Random r = new Random(); MyPanel() { setLocation(40, 30); setSize(100, 100); setBackground(Color.BLACK); new Timer(50, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { repaint(); } }).start(); } @Override public void paintComponent(Graphics g) { super.paintComponents(g); g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256))); g.fillRect(0,0,100,100); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д