package
AA.java
-------------------------------
package pp.gg;
public class AA
{
public void aa()
{
System.out.println("AAA");
}
}
-------------------------------
BB.java
-------------------------------
package pp.gg;
public class BB
{
public void bb()
{
System.out.println("BBB");
}
}
-------------------------------
CC.java
-------------------------------
package pp.gg;
public class CC
{
public void cc()
{
System.out.println("CCC");
}
}
-------------------------------
DD.java
-------------------------------
package pp.gg;
public class DD
{
public static void main(String args[])
{
AA A = new AA();
BB B = new BB();
CC C = new CC();
A.aa();
B.bb();
C.cc();
}
}
-------------------------------
컴파일 : javac -d . *.java
실행 : java pp.gg.DD
jar 파일 만들어서 사용하기
c:\bb\aa에 작업
-------------------------------
Test1.java
-------------------------------
package hong.co.kr;
public class Test1
{
public Test1(){}
public void hab(int a, int b)
{
System.out.println("합 : "+(a+b));
}
}
-------------------------------
Test2.java
-------------------------------
package hong.co.kr;
public class Test2
{
public Test2(){}
public void cha(int a, int b)
{
System.out.println("차 :" + (a-b));
}
}
-------------------------------
jar 파일 생성 //jar파일은 클래스를 묶어서 압축시켜놓은 것.
C:\bb\aa>javac -d . *.java
C:\bb\aa>jar -cvf hong.jar hong // hong폴더를 압축한다.... 압축프로그램으로도 풀린다..
추가된 manifest
추가 중: hong/(내부 = 0) (외부= 0)(0%가 저장되었습니다.)
추가 중: hong/co/(내부 = 0) (외부= 0)(0%가 저장되었습니다.)
추가 중: hong/co/kr/(내부 = 0) (외부= 0)(0%가 저장되었습니다.)
추가 중: hong/co/kr/Test1.class(내부 = 608) (외부= 376)(38%가 감소되었습니다.)
추가 중: hong/co/kr/Test2.class(내부 = 606) (외부= 375)(38%가 감소되었습니다.)
C:\bb\aa 에 hong.jar 파일이 생성된다.
jar 파일 사용
C:\Program Files\Java\jdk1.5.0_09\jre\lib\ext 에다가 복사한다.
-------------------------------
PackageTest.java
-------------------------------
import hong.co.kr.*;
class PackageTest
{
//변수(필드)선언
Test1 t1;
Test2 t2;
public PackageTest()
{
t1 = new Test1();
t2 = new Test2();
t1.hab(30,10);
t2.cha(30,20);
}
public static void main(String args[])
{
new PackageTest();
}
}
-------------------------------
awt
- awt(Abstract Window Toolkit)패키지는 여러 컴퓨터 플랫폼(platform)에서 공통적으로 사용할 수 있는
GUI(Graphics User Interface)컴포넌트를 제공한다.
- 이벤트를 처리하려면
1. 상속을 받는다(인터페이스나 클래스를)
2. 이벤트 등록을 한다 (addWindowListener(this))
3. 그에 해당하는 메서드를 오버라이딩 해야 한다.
형식
class Test extends Frame implements WindowListner //1번 상속을 받는다
{
필드
생성자()
{
객체생성 Button Label
addWindowListener(this); // 2번 이벤트 등록
}
public void windowClosing(WindowEvent w)// 3번 메서드를 오버라이딩 한다.
{
내용
}
}
add()메서드 : 컴포넌트를 컨테이너에 등록(붙이기)
원형 public Component add (Component comp)
ex> 컨테이너.add(컴포넌트)
f.add(bu);
add메서드는 자바 api 에서 Frame -> method -> java.awt.Container에서 제공한다.
창크기 메서드
1. setSize(width, height) : 창 크기
2. setBounds(x,y,width, height) : 창 위치와 크기
3. pack(); // 창 기본 크기( 컴포넌트를 고려하여 크기가 정해짐
창표시 메서드
1. show() : 사용하지 마세요 1.5 버전부터는 경고나옴.
2. setVisible(true/ false)
dispose() //리소스 반환
System.exit(0) // 창 종료(프로그램 종료)
- 참고
System.exit(int status) 를 실행하게 되면 Runtime.exit()를 호출하여 프로세스를 종료하게 된다
System.exit(0) 는 정상 종료
System.exit(1) 는 비정상 종료 (거의 사용 안함)
예를 들어 예외 처리할때 catch 절에 에러문구 발생후 System.exit(1);이라고 해놓으면
아래와 같은 형태로 구분하기 좋다.
그렇다고 해서 System.exit(0) 으로 쓰면 안되는것은 아니다.
어떤 에러가 발행한 경우 Syste.exit(1); 으로 종료시키면 이 프로그램이을 종료 시킨 다음 다른
프로그램에서 실행 결과를 알 수 있을 것이다.
예제 (창닫기)
-----------------------------------------------------------------------------------------
//인터페이스 상속, 모든 메서드 오버라이딩 해야 한다.
import java.awt.*;
import java.awt.event.*;
class WindowTest_1 extends Frame implements WindowListener
{
public WindowTest_1()//생성자
{
super("창 닫기");
addWindowListener(this);//이벤트등록
setBounds(200,200,300,300);
setVisible(true);//창표시
}
//오버라이딩
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
public void windowClosed(WindowEvent w){}
public void windowOpened(WindowEvent w){}
public void windowIconified(WindowEvent w){}
public void windowDeiconified(WindowEvent w){}
public void windowActivated(WindowEvent w){}
public void windowDeactivated(WindowEvent w){}
public static void main(String args[])
{
new WindowTest_1();
}
}
-----------------------------------------------------------------------------------------
예제 (창닫기) WindowAdapater 클래스 상속
inner 클래스 사용
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class WindowTest2 extends Frame
{
public WindowTest2()
{
super("창닫기 inner class");
addWindowListener(new MyWin()); // 이벤트 등록
setBounds(200,200,300,300);
setVisible(true);
}
// inner class
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w) //여기서 오타나면 실행할때 에러남
{
dispose();
System.exit(0);
}
}
//inner class end
public static void main(String args[])
{
new WindowTest2();
}
}
-----------------------------------------------------------------------------------------
예제 (창닫기) 무명 inner class 사용
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class WindowTest3 extends Frame
{
public WindowTest3()
{
super("창닫기 무명 inner 클래스");
setBounds(200,200,300,300);
setVisible(true);
addWindowListener(new WindowAdapter()
{// 무명 inner class
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
});
}//생성자
public static void main(String args[])
{
new WindowTest3();
}
}
-----------------------------------------------------------------------------------------
예제 (마우스 이벤트 처리)
-----------------------------------------------------------------------------------------
/*
인터페이스 상속, 다중 상속
마우스 - 이벤트 처리
*/
import java.awt.*;
import java.awt.event.*;
class MouseTest_1 extends Frame implements MouseListener, MouseMotionListener
{
// Field 선언
private int xpos,ypos;
private String msg;
public MouseTest_1()
{
super("마우스1");
setBounds(200,200,300,300);
setVisible(true);
addWindowListener(new MyWin());//이벤트 등록
addMouseListener(this);
addMouseMotionListener(this);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
//사용자 정의 메서드 마우스를 눌렀을때 좌표값 메시지를 표시하기 위해서 만듬
private void setValues(String msg, int x, int y)
{
this.msg = msg;
this.xpos = x;
this.ypos = y;
repaint();
}
public void paint(Graphics g)// 그리기
{
msg = msg + " @ [" + xpos + "," + ypos + "]";
g.drawString(msg, xpos,ypos);
}
// 오버라이딩
public void mousePressed(MouseEvent m)
{
setValues("mousePressed",m.getX(),m.getY()); //마우스 좌표값
}
public void mouseReleased(MouseEvent m)
{
setValues("mouseReleased",m.getX(),m.getY());
}
public void mouseClicked(MouseEvent m)
{
setValues("mouseClicked",m.getX(),m.getY());
}
public void mouseEntered(MouseEvent m)
{
System.out.println("마우스가 창 안으로 들어왔음");
}
public void mouseExited(MouseEvent m)
{
System.out.println("마우스가 창 밖으로 나갔다.");
}
public void mouseMoved(MouseEvent m)
{
setValues("mouseMoved" ,m.getX(), m.getY());
}
public void mouseDragged(MouseEvent m)
{
setValues("mouseDragged" ,m.getX(), m.getY());
}
public static void main(String args[])
{
new MouseTest_1();
}
}
-----------------------------------------------------------------------------------------
예제 (마우스 이벤트 처리 applet 으로)
-----------------------------------------------------------------------------------------
/*
마우스 이벤트
inner class 예제 applet
*/
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class MouseTest_2 extends java.applet.Applet
{
public void init()
{
setBackground(Color.red);
addMouseListener(new MyMouse());
}
//inner class
class MyMouse extends MouseAdapter
{
public void mousePressed(MouseEvent m)
{
setBackground(Color.orange);
repaint();
}
public void mouseReleased(MouseEvent m)
{
setBackground(Color.green);
repaint();
}
}
public void paint(Graphics g)
{
g.drawString("Hello MouseTest_2!", 50, 50);
}
}
-----------------------------------------------------------------------------------------
예제 (마우스로 그림그리기)
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class MouseTest_4 extends Frame implements MouseMotionListener
{
//Field
Point point = new Point();
//생성자
public MouseTest_4()
{
super("마우스4");
setFont(new Font("Dialog",Font.BOLD,35)); //Font 설정
setForeground(Color.blue); //글꼴색
addWindowListener(new MyWin());
setBounds(200,200,700,700);
setVisible(true);
addWindowListener(new MyWin());
addMouseMotionListener(this);
}
//inner class
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
public void update(Graphics g)
{
paint(g);
}
public void paint(Graphics g)
{
//g.drawString("지금은 8교시 수업중 입니다", point.x, point.y);
g.drawOval(point.x, point.y,10,10);
}
public void mouseMoved(MouseEvent m)
{
}
public void mouseDragged(MouseEvent m)
{
point = m.getPoint();
repaint();
}
//main
public static void main(String args[])
{
new MouseTest_4();
}
}//class