[패널과 합친 레이블 ]
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Animation extends JFrame {
private static final long serialVersionUID = 1L;
public Animation() {
setLayout(null);
JPanel jp = new JPanel();
Icon ic = new ImageIcon("image\\캡처1.png");
JLabel lbl = new JLabel(ic);
jp.setBounds(20, 150, 430, 420);
jp.add(lbl);
// 패널추가
add(jp);
// 기본설정
setTitle("움직이는 스머프");
setBounds(100, 100, 1000, 1000);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
String[] imgs = { "캡처1.png", "캡처2.png", "캡처3.png", "캡처4.png", "캡처5.png", "캡처6.png", "캡처7.png", "캡처8.png",
"캡처9.png", "캡처10.png", "캡처11.png", "캡처12.png" };
int idx = 0;
int pos = 5;
while (true) {
idx = idx + 1;
try {
Thread.sleep(100);
Icon icon1 = new ImageIcon("image\\" + imgs[idx % imgs.length]);
lbl.setIcon(icon1);
int x = jp.getX();
int y = jp.getY();
System.out.println(y);
if(x<10) {
pos=-5;
}else if (x>450) {
pos = 5;
}
jp.setLocation(x+pos , y);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
// 위의 소스코드는 이미지를 움직이기 위한 소스코드 입니다.
// 만약 패널위에 이미지를 묶어주었다면 위와 같이 이미지가 들어간 레이블의 값을 이동시키는 것이 아니라
// 이미지를 묶고 있는 패널을 이동시켜주어야만합니다.
만약, 레이블만 사용할 것이라면, 레이블만을 움직여주어야만합니다.
[레이블로만 구성된 이미지 이동 ]
import java.awt.Button;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Animation2 extends JFrame {
public Animation2() {
setLayout(null);
Icon ic = new ImageIcon("image\\캡처1.png");
JLabel lbl = new JLabel(ic);
lbl.setBounds(150, 30, 150,150);
add(lbl);
Button btn = new Button("dddddd");
add(btn);
setTitle("움직이는 스머프");
setBounds(100, 100, 1000, 1000);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
String[] imgs = { "캡처1.png", "캡처2.png", "캡처3.png", "캡처4.png", "캡처5.png", "캡처6.png", "캡처7.png", "캡처8.png",
"캡처9.png", "캡처10.png", "캡처11.png", "캡처12.png" };
int idx = 0;
int pos = 5;
while (true) {
idx = idx + 1;
try {
Thread.sleep(50);
Icon icon1 = new ImageIcon("image\\" + imgs[idx % imgs.length]);
lbl.setIcon(icon1);
int x = lbl.getX();
int y = lbl.getY();
System.out.println(x);
if (x < 10) {
pos = 5;
} else if (x > 750) {
pos = -5;
}
lbl.setLocation(x + pos, y);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}