package com.tistory.tansanc;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.*;
// 그림이 그려지는 컴포넌트를 정의
class MyComponent extends JComponent {
public int x = 30;
public int y = 420;
public boolean wire = true;
public void paint(Graphics g) {
g.setColor(new Color(167, 114, 48));
g.drawLine(100, 500, 100, 450);
g.drawLine(100, 450, 75, 400);
g.drawLine(100, 450, 125, 400);
if( wire )
{
g.setColor(new Color(0, 255, 0));
g.drawLine(75, 400, x + 25, y + 25);
g.drawLine(125, 400, x + 25, y + 25);
}
g.setColor(new Color(255, 0, 0));
g.fillOval(x, y, 50, 50);
}
}
// 프레임 컴포넌트를 상속받아서 정의
public class StarFrame extends JFrame implements ActionListener,
MouseMotionListener, MouseListener {
public static final int WIDTH = 800;
public static final int HEIGHT = 600;
JButton next = new JButton("Next");
MyComponent c;
public StarFrame() {
setTitle("MyFrame");
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
// MyComponent 객체 생성하여 프레임에 추가
c = new MyComponent();
next.addActionListener(this);
add(c, BorderLayout.CENTER);
add(next, BorderLayout.SOUTH);
addMouseMotionListener(this);
addMouseListener(this);
}
public static void main(String[] args) {
StarFrame frame = new StarFrame();
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub
if (arg0.getX() < 140 && arg0.getY() > 400) {
c.x = arg0.getX()-30;
c.y = arg0.getY()-60;
c.repaint();
}
}
@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
boolean mouse = false;
int startX;
int startY;
int endX;
int endY;
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
if (arg0.getX() < 140 && arg0.getY() > 400) {
if (mouse == false) {
c.wire = true;
c.x = arg0.getX()-30;
c.y = arg0.getY()-60;
c.repaint();
startX = arg0.getX();
startY = arg0.getY();
mouse = true;
}
}
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
if (mouse == true) {
endX = arg0.getX();
endY = arg0.getY();
System.out.println("power X : " + (startX - endX));
System.out.println("power Y : " + (startY - endY));
mouse = false;
c.wire = false;
if( ft != null)
{
ft.stop();
}
ft = new FlyThread((startX - endX), (startY - endY));
ft.start();
}
}
FlyThread ft;
class FlyThread extends Thread
{
int powerX;
int powerY;
FlyThread(int powerX, int powerY)
{
this.powerX = powerX;
this.powerY = powerY;
}
@Override
public void run() {
while(true)
{
if( c.x > 800)
{
break;
}
if( c.y > 600)
{
break;
}
c.x += powerX/10;
c.y += powerY/10;
powerY += 1;
try {
sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
c.repaint();
}
}
}
}
'Programming > JAVA,JSP' 카테고리의 다른 글
JAVA File 실습 (0) | 2014.01.17 |
---|---|
JAVA 공던지기 게임 완성 (0) | 2014.01.16 |
JAVA 가계부 #2 (0) | 2014.01.14 |
JAVA 가계부 (0) | 2014.01.14 |
JAVA 쿵쿵따 게임 #2 중복 탐지 (0) | 2014.01.09 |