Java скрыть изображения - PullRequest
       23

Java скрыть изображения

0 голосов
/ 06 октября 2011

Я пытаюсь сделать простую программу, которая показывает, что позволяет изображению качаться по экрану. Теперь мне удалось сделать изображение, идущее слева направо, но теперь у меня на экране около 20 изображений.

Что мне нужно получить, так это то, что при печати следующего изображения предыдущее изображение скрыто. Также, если бы кто-то мог помочь мне с печатью с помощью таймера, это было бы здорово.

Вот мой код

package imagemove;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;

public class imagemove extends Component {
    private int x;
    private int y;

    BufferedImage img;

    public imagemove() {
       try {
           img = ImageIO.read(new File("F:/JAVA/workspace/Tutorials/src/imagemove/1.jpg"));
       } catch (IOException e) {
       } 

    }


    public void paint(Graphics g) {
        x = 0;
        y = 50;

        for (int number = 1; number <= 15; number++) {
            g.drawImage(img, x, y, this);
            if (x > 1000) {
                x = 0;
            } else {
                x += 100;
            }   

            if(y > 100) {
                y -= 100;
            } else {
                y += 25;
            }
            repaint();
        }
    }


    public static void main(String[] args) { 
        JFrame f = new JFrame("Boot");   
        f.setSize(1000,1000);
        f.add(new imagemove());        
        f.setVisible(true);
    }
}

Ответы [ 3 ]

2 голосов
/ 06 октября 2011
  1. Вы должны поместить свой цикл for в другой метод, который вызывается из основного метода.(инструкция рисования изображения должна оставаться в методе рисования явно)
  2. использовать paintComponent вместо рисования
  3. поставить super.paintComponent (g) в качестве первой строки в paintComponent ().и ваши предыдущие изображения должны быть очищены

Редактировать:

расширить JComponent вместо компонента.Компонент AWT, JComponent - Swing

0 голосов
/ 06 октября 2011

Вы не можете вызвать repaint из метода paint ().

0 голосов
/ 06 октября 2011

Это работает так; это проверило это:

public class imagemove extends Component {
    private int x;
    private int y;


    BufferedImage img;

    public imagemove() {
       try {
           img = ImageIO.read(new File("F:/JAVA/workspace/Tutorials/src/imagemove/1.jpg"));
       } catch (IOException e) {
       } 

       x = 0;
       y = 50;
    }


    @Override
    public void paint(Graphics g) {
        g.drawImage(img, x, y, this);
        if (x > 1000) {
            x = 0;
        } else {
            x += 100;
        }   

    if(y > 100) {
        y -= 100;
    } else {
        y += 25;
    }
}


public static void main(String[] args) { 
    JFrame f = new JFrame("Boot");   
    f.setSize(1000,1000);
    f.add(new imagemove());        
    f.setVisible(true);

    for (int number = 1; number <= 15; number++) {
        f.repaint();

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {}
    }
}

}

...