Перерисовать картинку - 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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д