英文:
Animation in java swing
问题
以下是翻译好的内容:
package project;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Trees extends JPanel implements ActionListener {
Timer timer = new Timer(10, this);
BufferedImage img1;
BufferedImage img2;
int x = 0, velX = 2;
int y = 0, velY = 2;
public Trees(BufferedImage[] images) {
img1 = images[0];
img2 = images[1];
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img1, x, 100, this);
g.drawImage(img2, 300, y, this);
timer.start();
}
@Override
public void actionPerformed(ActionEvent e) {
if (x < 0 || x > 450)
velX = -velX;
if (y < 0 || y > 450)
velY = -velY;
x = x + velX;
y = y + velY;
repaint();
}
public static void main(String[] args) throws IOException {
String[] ids = { "mt1", "mt2" };
BufferedImage[] images = new BufferedImage[ids.length];
for (int j = 0; j < images.length; j++) {
String path = "images\\" + ids[j] + ".png";
images[j] = ImageIO.read(new File(path));
}
Trees test = new Trees(images);
JFrame f = new JFrame();
JPanel panel = new JPanel();
panel.setBackground(Color.BLUE);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(test);
f.setSize(600, 600);
f.setVisible(true);
}
}
英文:
I want to create an animation that looks like what is shown in this link:
Link.
To be more precise I want my trees to behave like a cloud in the link. I did animation with the trees, but it doesn't work how I want. Below, I have posted my code. Please, tell me how to create it?
package project;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Trees extends JPanel implements ActionListener {
Timer timer = new Timer(10, this);
BufferedImage img1;
BufferedImage img2;
int x = 0, velX = 2;
int y = 0, velY = 2;
public Trees(BufferedImage[] images) {
img1 = images[0];
img2 = images[1];
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img1, x, 100, this);
g.drawImage(img2, 300, y, this);
timer.start();
}
@Override
public void actionPerformed(ActionEvent e) {
if(x < 0 || x > 450)
velX = -velX;
if(y < 0 || y > 450)
velY = -velY;
x = x + velX;
y = y + velY;
repaint();
}
public static void main(String[] args) throws IOException {
String[] ids = {"mt1", "mt2"};
BufferedImage[] images = new BufferedImage[ids.length];
for(int j = 0; j < images.length; j++) {
String path = "images\\" + ids[j] + ".png";
images[j] = ImageIO.read(new File(path));
}
Trees test = new Trees(images);
JFrame f = new JFrame();
JPanel panel = new JPanel();
panel.setBackground(Color.BLUE);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(test);
f.setSize(600,600);
f.setVisible(true);
}
}
专注分享java语言的经验与见解,让所有开发者获益!
评论