Java5-2

skatechildrenΛογισμικό & κατασκευή λογ/κού

3 Νοε 2013 (πριν από 3 χρόνια και 9 μήνες)

112 εμφανίσεις

JAVA
실습

6
주차

Jin
-
Ho, Jang

M.S. Hanyang Univ
.

HPC&OT Lab
.

jinhoyo@nate.com

1

HPC & OT Lab.

LayoutManager


BorderLayout


frame


디폴트로

취하는

Layout



FlowLayout


Panel


기본

레이아웃



BoxLayout


FlowLayout


유사하나

수직방향으로






정렬이

가능하다

#4
-

2

HPC & OT Lab.

#4
-

3

북쪽

남쪽

서쪽

동쪽

중앙

HPC & OT Lab.

#4
-

4

HPC & OT Lab.

FlowLayout

#4
-

5

HPC & OT Lab.

BoxLayout

#4
-

6

HPC & OT Lab.


import javax.swing.*;


public class SimpleGui1{



public static void main(String[] args){




JFrame frame = new JFrame();




Jbutton button = new JButton(“click me”);




//
프레임과

버튼

생성




frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);




//
이렇게

하면



닫을때

프로그램이

종료됨




frame.getContentPane().add(button);




//
버튼을

프레임의

content pane


추가함




frame.setSize(300,300);




//
프레임의

크기를

픽셀

단위로

지정




frame.setVisible(true); //
화면에

표시하도록

설정



}


}

HPC & OT Lab.


#Tip


Subtyping


Subclassing


차이



(interface and abstraction)



Implements(
여러개
) & extends(
1

)



HPC & OT Lab.

8

Import javax.swing.*;

Import java.awt.event.*;


Public class SimpleGuiB implements ActionListener{


JButton button;




public static void main(String[] args){



SimpleGuiB gui = new SimpleGuiB();



gui.go();


}


public void go(){



JFrame frame = new JFrame();



button = new JButton(“click me”);



button.addActionListener(this);




frame.getContentPane().add(button);


frame.setDefaultCloseOperation(Jframe.EXIT_ON_C
LOSE);


#4
-

9


frmae.setSize(300,300);


frame.setVisible(true);


}



public void actionPerformed(ActionEvent
event){


button.setText(“I’ve been clicked!!”);


}

HPC & OT Lab.

10

HPC & OT Lab.


HPC & OT Lab.

11

HPC & OT Lab.

12

HPC & OT Lab.

13

실습

5. Input, Output and State

1. Swing package


JPanel class


JFrame class


배운다
.

2. AWT package


Graphics class


배운다
.

3. Field Variable


Scope rule


대해

배운다
.


14

HPC & OT Lab.

SwingFrameMain.java

// Swing
기본창

만들기

import javax.swing.*;

class SwingFrame extends JFrame {


//
내용없음

}

public class SwingFrameMain {


public static void main(String[] args) {




JFrame f = new SwingFrame(

Swing
기본창만들기

);



f.setSize(300, 200);



f.show();



}

}

15

HPC & OT Lab.

기초실습

1
-

JFrame Class


JFrame


스윙에서

타이틀이

있는

창을

표현하기

위해서

사용되는

클래
스이다
.



생성자


JFrame()


JFrame(String title)



메소드


Container
getContentPane
() :
프레임의

contentPane


리턴
. Jframe
에서

버튼이나

다른

컴포넌트를

붙이기

위해서

사용


Void set
setDefaultCloseOperation
(int operation) :
사용자가

프레임의

우측

상단에

있는

윈도우

종료버튼을

클릭하는

경우에

수행



디폴
트로

작업을

설정

HPC & OT Lab.

#4
-

17


DrawShapes.java

import

java
.
awt
.
*
;

import

javax
.
swing
.
*
;

public

class

DrawShapes

extends

JFrame


{



public

void

paint(Graphics

g)


{



g
.
setColor(Color
.
BLACK)
;



g
.
drawOval(
10
,

30
,

20
,

20
)
;



g
.
fillRect(
50
,

30
,

20
,

20
)
;



g
.
drawLine(
90
,

50
,

100
,

30
)
;



g
.
drawLine(
100
,

30
,

110
,

50
)
;



g
.
drawLine(
90
,

50
,

110
,

50
)
;



g
.
drawString("Hello

홍길동
",

10
,

70
)
;


}

사용자가

직접

호출하는

일은

절대

없다
.
이것은

시스템에서

직접호출
.

HPC & OT Lab.

#4
-

18


DrawShapes.java


public

static

void

main(String[]

args)



{



DrawShapes

ds

=

new

DrawShapes()
;



ds
.
setSize(
120
,

80
)
;


ds
.
setVisible
(true)
;



}

}

실행결과

HPC & OT Lab.

#4
-

19

기초실습

2
-

JPanel Class


JPanel
클래스는

보통

투명하며
,
다른

컴포넌트를


이기

위해서

사용된다
.



생성자


JPanel() :
패널을

생성한다
.
디폴트로

생성된

패널


플로우

레이아웃을

사용한다
.


JPanel(LayoutManager layout) :
레이아웃

매니저를

갖는

패널을

생성한다
.

HPC & OT Lab.

#4
-

20


ClockWriter
.java

import

java
.
awt
.
*
;

import

javax
.
swing
.
*
;

import

java
.
util
.
*
;

public

class

ClockWriter

extends

JPanel

{



int

width=
200
;


public

ClockWriter()


{




JFrame

clocks_frame

=

new

JFrame()
;



clocks_frame
.
getContentPane()
.
add(this)
;



clocks_frame
.
setTitle("Clock")
;



clocks_frame
.
setSize(width,

width)
;



clocks_frame
.
setVisible(true)
;


}

HPC & OT Lab.

#4
-

21


ClockWriter
.java


public

void

paintComponent(Graphics

g)


{

g
.
setColor(Color
.
white)
;



g
.
fillRect(
0
,
0
,

width,

width)
;



GregorianCalendar

time

=

new

GregorianCalendar()
;



int

minutes_angle

=

90

-

(time
.
get(Calendar
.
MINUTE)*
6
)
;



//
0
도가

3
시방향




int

hour_angle

=

90

-

(time
.
get(Calendar
.
HOUR)*
30
)
;



int

left_edge

=

50
;



int

top

=

50
;



int

diameter

=

100
;



g
.
setColor(Color
.
black)
;



g
.
drawOval(left_edge,

top,

diameter,

diameter)
;



g
.
setColor(Color
.
red)
;



g
.
fillArc(left_edge

+

5
,

top

+

5
,

diameter

-

10
,






diameter

-

10
,

minutes_angle,

5
)
;


HPC & OT Lab.

#4
-

22


ClockWriter
.java



g.setColor(Color.blue);



g.fillArc(left_edge + 25, top + 25, diameter
-

50,





diameter
-

50, hour_angle,
-
8);


}


public static void main(String[] args)


{



new ClockWriter();


}

}

실행결과

HPC & OT Lab.

#4
-

23

기초실습

3


창을

최소화

했다가

다시

활성화할

때마다

크기가


으로

줄어드는

달걀을

그리는

프로그램을

작성하시

.


paintComponent() method


대해

이해한다
.


실행결과

HPC & OT Lab.

#4
-

24


EggWriter
.java

import

java
.
awt
.
*
;

import

javax
.
swing
.
*
;

public

class

EggWriter

extends

JPanel

{



private

int

WIDTH

=

300
;


private

int

HEIGHT

=

200
;


private

Color

BACKGROUND_COLOR

=

Color
.
yellow
;




private

int

egg_width

=

600
;


private

int

egg_height

=

400
;


public

EggWriter()


{



JFrame

my_frame

=

new

JFrame()
;



my_frame
.
getContentPane()
.
add(this)
;



my_frame
.
setTitle("EggWriter")
;

HPC & OT Lab.

#4
-

25


EggWriter
.java



my_frame
.
setSize(WIDTH,

HEIGHT)
;



my_frame
.
setVisible(true)
;



my_frame
.
setDefaultCloseOperation(JFrame
.
EXIT_ON_CLOSE)
;


}


public

void

paintComponent
(Graphics

g)


{




g
.
setColor(BACKGROUND_COLOR)
;



g
.
fillRect(
0
,

0
,

WIDTH,

HEIGHT)
;



int

left_border

=

10
;



int

baseline

=

190
;



g
.
setColor(Color
.
pink)
;



g
.
fillOval(left_border,

baseline

-

egg_height,







egg_width,

egg_height)
;



g
.
setColor(Color
.
black)
;

HPC & OT Lab.

#4
-

26


EggWriter
.java



g
.
drawOval(left_border,

baseline

-

egg_height,







egg_width,

egg_height)
;



egg_width

=

egg_width

/

2
;



egg_height

=

egg_height

/

2
;


}




public

static

void

main(String[]

args)


{



new

EggWriter()
;


}

}

HPC & OT Lab.

#4
-

27

응용실습

1


다음과

같이

Z
-
MAN


그리시오


창을

최소화

했다가
,
다시

활성화

시켜도

그대로

나오도록

해야




본인의

이름과

학번이

나오도록

한다
.



실행결과

HPC & OT Lab.

#4
-

28

응용실습

2


아래와

같은

명함을

만드는

프로그램을

작성하시오
.


창을

최소화

했다가
,
다시

활성화

시켜도

그대로

나오도록

해야





실행결과

HPC & OT Lab.

#4
-

29

응용실습

3


아래와

같은

달력을

그리는

프로그램을

작성하시오
.


이번

달을

그리도록


.


요일

별로

정확한

날짜를

표시하도록


.


최소화한



다시

활성화

시켰을

경우

달력이


이도록


.



실행결과

HPC & OT Lab.

#4
-

30

응용실습

4


호를

그리는데

창을

최소화

하였다가

다시

띄웠




호의

색깔과

반지름을

랜덤으로

값을

얻어
와서

그려주도록

한다
.



실행결과

HPC & OT Lab.