Перерисовать картинку - 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);
}
}