Bibi's DevLog ๐Ÿค“๐ŸŽ

[Java - AWT ํ•™์Šต์ •๋ฆฌ] ์ž๋ฐ”์˜ GUIํ”„๋กœ๊ทธ๋ž˜๋ฐ - (1) AWT์ปดํฌ๋„ŒํŠธ, ๋ฉ”๋‰ด ์ปดํฌ๋„ŒํŠธ, ๋ ˆ์ด์•„์›ƒ ๋งค๋‹ˆ์ € ๋ณธ๋ฌธ

๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ/Java ์ž๋ฐ”

[Java - AWT ํ•™์Šต์ •๋ฆฌ] ์ž๋ฐ”์˜ GUIํ”„๋กœ๊ทธ๋ž˜๋ฐ - (1) AWT์ปดํฌ๋„ŒํŠธ, ๋ฉ”๋‰ด ์ปดํฌ๋„ŒํŠธ, ๋ ˆ์ด์•„์›ƒ ๋งค๋‹ˆ์ €

๋น„๋น„ bibi 2020. 11. 23. 18:09

์ด ๊ธ€์€ ์•„๋ž˜ ๋งํฌ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์š”์•ฝ์ •๋ฆฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค๐Ÿ™‡‍โ™€๏ธ

'์ž๋ฐ”์˜ ์ •์„' ๋‚จ๊ถ์„ฑ ๋‹˜์˜ ๋ธ”๋กœ๊ทธ ์ž๋ฃŒ - AWT

 

[์ž๋ฐ”์˜ ์ •์„ 2ํŒ] 13์žฅ AWT์ž…๋‹ˆ๋‹ค.(PDF)

java์˜ ์ •์„ 3ํŒ์—์„œ AWT๋ฅผ ๋บ๋”๋‹ˆ ํ•„์š”ํ•˜๋‹ค๋Š” ๋ถ„๋“ค์ด ์žˆ์–ด์„œ ๋”ฐ๋กœ ๋ฝ‘์•„์„œ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค. ํ•„์š”ํ•˜์‹  ๋ถ„๋“ค ๋งˆ์Œ๊ป ๊ฐ€์ ธ๋‹ค ์“ฐ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

codechobo.tistory.com

 

์•„๋ž˜ ๊นƒํ—ˆ๋ธŒ ๋งํฌ์—์„œ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋” ํŽธํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

github.com/bibi6666667/Codesquad-Cocoa-JAVA/blob/main/mission/src/mission6/AWT.md

 

bibi6666667/Codesquad-Cocoa-JAVA

์ฝ”๋“œ์Šค์ฟผ๋“œ - ๋งˆ์Šคํ„ฐ์ฆˆ ์ฝ”์ฝ”์•„ ๊ณผ์ •(JAVA)์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. Contribute to bibi6666667/Codesquad-Cocoa-JAVA development by creating an account on GitHub.

github.com

 


AWT

  • AWT๋ž€?
    • AWT = Abstract Window Toolkit๋กœ, ์ž๋ฐ”์˜ Window GUI ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„๊ตฌ์ด๋‹ค.
  • GUI = Graphical User Interface. ๊ทธ๋ž˜ํ”ฝ ๊ธฐ๋ฐ˜์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค. ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๋ž˜ํ”ฝ์„ ํ†ตํ•ด ํ•˜๋“œ์›จ์–ด์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ํ™˜๊ฒฝ. (๋งˆ์šฐ์Šค ๋“ฑ์„ ํ†ตํ•ด).
    • GUI์˜ ์š”์†Œ : ์œˆ๋„์šฐ, ์Šคํฌ๋กค๋ฐ”, ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€, ๋ฒ„ํŠผ ๋“ฑ์ด ์žˆ๋‹ค.
  • GUI๋Š” CUI (Character User Interface, ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค) ์™€ ๋Œ€์กฐ์ ์ธ ๊ฐœ๋…์ด๋‹ค.
  • AWT๋Š” OS์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ AWT์‘์šฉํ”„๋กœ๊ทธ๋žจ์˜ ์™ธํ˜•์€ ์‹คํ–‰๋˜๋Š” OS(์œˆ๋„์šฐ/iOS..)์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚œ๋‹ค.

Swing

  • Swing์€ AWT๋ฅผ ํ™•์žฅํ•œ ๊ฒƒ์ด์ง€๋งŒ AWT๋ณด๋‹ค ๋‹ค์–‘, ํ’๋ถ€ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ณต. - ์ตœ๊ทผ์€ JavaFX๊ฐ€ ๋” ์ข‹๋‹ค๊ณ .
  • Swing๊ณผ AWT์˜ ์‚ฌ์šฉ๋ฒ•์€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋ฏ€๋กœ AWTํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋จผ์ € ์ตํžˆ๋ฉด ๋œ๋‹ค.

AWT์˜ ๊ตฌ์„ฑ

AWT ํŒจํ‚ค์ง€

  • (import java.awt.*;๋กœ๋„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค)

  • ํŒจํ‚ค์ง€๋ช…์ด java.awt๋กœ ์‹œ์ž‘ํ•˜๋ฉด ๋ชจ๋‘ AWT๊ด€๋ จ ํŒจํ‚ค์ง€์ด๋‹ค.

    • java.awt : AWT๋ฅผ ์ด์šฉํ•œ GUI์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์„ฑ์— ํ•„์š”ํ•œ ๊ธฐ๋ณธ์  ํด๋ž˜์Šค์™€ ์ปดํฌ๋„ŒํŠธ ์ œ๊ณต.
    • java.awt.event : GUI์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ํด๋ž˜์Šค,์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต.
    • java.awt.datatransfer : ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด/์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ตฌํ˜„์— ํ•„์š”ํ•œ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต.
    • java.awt.dnd : ๋Œ์–ด๋†“๊ธฐ=๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ(Drag and Drop) ๊ตฌํ˜„์— ํ•„์š”ํ•œ ํด๋ž˜์Šค ์ œ๊ณต.
    • java.awt.font : ํฐํŠธ์™€ ๊ด€๋ จ๋œ ํด๋ž˜์Šค,์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต.
    • java.awt.image : ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ๋ณ€๊ฒฝ์— ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค ์ œ๊ณต.
    • java.awt.print : ์ถœ๋ ฅ์— ๊ด€๋ จ๋œ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต.

์ปดํฌ๋„ŒํŠธ Component

  • ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์˜ ์กฐ์ƒ์€ Componentํด๋ž˜์Šค. (โ€ป์˜ˆ์™ธ : ๋ฉ”๋‰ด ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ)
  • Componentํด๋ž˜์Šค์˜ ์กฐ์ƒ์€ Objectํด๋ž˜์Šค.
  • ์ปดํฌ๋„ŒํŠธ(AWT์ปดํฌ๋„ŒํŠธ) : GUI์‘์šฉํ”„๋กœ๊ทธ๋žจ์˜ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š”, Componentํด๋ž˜์Šค์™€ ๊ทธ ์ž์† ํด๋ž˜์Šค๋“ค.
    • ์œˆ๋„์šฐ, ์Šคํฌ๋กค๋ฐ”, ๋ฒ„ํŠผ, ์ฒดํฌ๋ฐ•์Šค, ๋ฆฌ์ŠคํŠธ .. ๋“ฑ์ด ์žˆ๋‹ค.
  1. ์ผ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ : (์ตœ์ƒ์œ„์กฐ์ƒ : Component).
    • Button, Label, Checkbox, List, Choice, Scrollbar, Dialog(๋Œ€ํ™”์ƒ์ž์š”์†Œ), Frame, TextArea/TextField, FileDialog(ํŒŒ์ผ์—ด๊ธฐ)..
  2. ๋ฉ”๋‰ด ์ปดํฌ๋„ŒํŠธ : (์ตœ์ƒ์œ„์กฐ์ƒ : MenuComponent)
    • MenuBar, MenuItem(Menu-PopupMenu, CheckboxMenuItem) ..

์ปดํฌ๋„ŒํŠธ์˜ ์ฃผ์š” ๋ฉ”์„œ๋“œ

  • Color getBackground() : ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐฐ๊ฒฝ์ƒ‰์„ ์–ป๋Š”๋‹ค
  • void setBackground(Color c) : ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐฐ๊ฒฝ์ƒ‰์„ ์ง€์ •๋œ ์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
  • Cursor getCursor() : ์ปดํฌ๋„ŒํŠธ์— ์ง€์ •๋œ ์ปค์„œ๋ฅผ ์–ป๋Š”๋‹ค.
  • void setCursor(Cursor c) : ์ปดํฌ๋„ŒํŠธ์˜ ์ปค์„œ(๋งˆ์šฐ์Šคํฌ์ธํ„ฐ) ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • Font getFont() : ์ปดํฌ๋„ŒํŠธ์— ์ง€์ •๋˜์–ด ์žˆ๋Š” Font๋ฅผ ์–ป๋Š”๋‹ค.
  • void setFont(Font f) : ์ปดํฌ๋„ŒํŠธ์˜ Font๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • Color getForeground() : ์ปดํฌ๋„ŒํŠธ์˜ ์ „๊ฒฝ์ƒ‰์„ ์–ป๋Š”๋‹ค.
  • void setForeground(Color c) : ์ปดํฌ๋„ŒํŠธ์˜ ์ „๊ฒฝ์ƒ‰์„ ์ง€์ •ํ•œ๋‹ค.
  • int getHeight() : ์ปดํฌ๋„ŒํŠธ์˜ ๋†’์ด๋ฅผ ์–ป๋Š”๋‹ค.
  • int getWidth() : ์ปดํฌ๋„ŒํŠธ์˜ ํญ์„ ์–ป๋Š”๋‹ค.
  • void setBounds(int x, int y, int witdh, int height) : ์ปดํฌ๋„ŒํŠธ์˜ ์œ„์น˜(x,y)์™€ ํฌ๊ธฐ(width, height)๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • Rectangle getBounds() : ์ปดํฌ๋„ŒํŠธ์˜ ์œ„์น˜์™€ ํฌ๊ธฐ(Rectangle ๊ฐ์ฒด)๋ฅผ ์–ป๋Š”๋‹ค.
  • Point getLocation() : ์ปดํฌ๋„ŒํŠธ์˜ ์œ„์น˜๋ฅผ ์–ป๋Š”๋‹ค.
  • void setLocation(int x, int y) : ์ปดํฌ๋„ŒํŠธ์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • Dimension getSize() : ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ๋ฅผ ์–ป๋Š”๋‹ค.
  • void setSize(int width, int height) : ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • boolean hasFocus() : ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ˜„์žฌ focus๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค.
  • void requestFocus() : ์ปดํฌ๋„ŒํŠธ๊ฐ€ focus๋ฅผ ๊ฐ–๋„๋ก ํ•œ๋‹ค.
  • void paint(Graphics g) : ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™”๋ฉด์— ๊ทธ๋ฆฐ๋‹ค.
  • void repaint() : ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™”๋ฉด์— ๋‹ค์‹œ ๊ทธ๋ฆฐ๋‹ค.
  • void setEnabled(boolean b) : ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉ๊ฐ€๋Šฅ(true)/๋ถˆ๊ฐ€๋Šฅ(false)ํ•˜๊ฒŒ ํ•œ๋‹ค.
  • Container getParent() : ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด์ ธ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ(parent)๋ฅผ ์–ป๋Š”๋‹ค.
  • void setVisible(boolean b) : ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์— ๋ณด์ด๊ฒŒ(true)/๋ณด์ด์ง€ ์•Š๊ฒŒ(false)ํ•œ๋‹ค.

์ปจํ…Œ์ด๋„ˆ Container

  • ์ปจํ…Œ์ด๋„ˆ : Component์˜ ์ž์†์ธ Container ๋˜๋Š” Container์˜ ์ž์†๋“ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. ๋…๋ฆฝ์  ์ปจํ…Œ์ด๋„ˆ : ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ & ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ ๋˜๋Š” ์ข…์†์  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.

    • Frame
    • ๊ฐ€์žฅ ์ผ๋ฐ˜์  ์ปจํ…Œ์ด๋„ˆ. Window์™€ ๋ชจ์–‘์ด ๊ฐ™๋‹ค.
    • titlebar์™€ ํฌ๊ธฐ์กฐ์ ˆ๋ฒ„ํŠผ, ๋‹ซ๊ธฐ๋ฒ„ํŠผ์ด ์žˆ๋‹ค.
    • ๋ฉ”๋‰ด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Window
    • Frame์˜ ์กฐ์ƒ์ด๋‹ค.
    • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํ‰๋ฉด๊ณต๊ฐ„๋งŒ์„ ๊ฐ–๋Š”๋‹ค.
    • ๊ฒฝ๊ณ„์„ , titlebar, ํฌ๊ธฐ์กฐ์ ˆ๋ฒ„ํŠผ, ๋‹ซ๊ธฐ๋ฒ„ํŠผ ์—†๊ณ  ๋ฉ”๋‰ด ์ถ”๊ฐ€๋„ ๋ถˆ๊ฐ€๋Šฅ.
    • Dialog(๋Œ€ํ™”์ƒ์ž์š”์†Œ)
    • titlebar์™€ ๋‹ซ๊ธฐ๋ฒ„ํŠผ์€ ์žˆ์ง€๋งŒ, ๋ฉ”๋‰ด๋Š” ์—†๋‹ค.
    • ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.
    • ์ฃผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ฑฐ๋‚˜ ์‘๋‹ต์„ ๋ฐ›๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.
  2. ์ข…์†์  ์ปจํ…Œ์ด๋„ˆ : ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์—†์Œ & ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์— ํฌํ•จ๋˜์–ด์•ผ๋งŒ ํ•œ๋‹ค.

    • Panel
    • ํ‰๋ฉด๊ณต๊ฐ„. Frame์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์œผ๋‚˜ ๋‹จ๋… ์‚ฌ์šฉ์€ ๋ถˆ๊ฐ€๋Šฅ.
    • ScrollPane(์Šคํฌ๋กคํŽ˜์ธ)
    • Panel๊ณผ ๊ฐ™์€ ํ‰๋ฉด๊ณต๊ฐ„์ด๋‚˜ ๋‹จ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ.
    • ์ž์‹ ๋ณด๋‹ค ํฐ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํฌํ•จ๋˜๋ฉด ์Šคํฌ๋กค๋ฐ”๊ฐ€ ์ž๋™์œผ๋กœ ๋‚˜ํƒ€๋‚จ.

์ปจํ…Œ์ด๋„ˆ์˜ ์ฃผ์š” ๋ฉ”์„œ๋“œ

  • ์ปจํ…Œ์ด๋„ˆ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์˜ค๋ฒ„๋กœ๋”ฉ๋œ add๋ฉ”์„œ๋“œ๋“ค์ด ์žˆ๋‹ค.

    • ๋”ฐ๋ผ์„œ ์ปจํ…Œ์ด๋„ˆ์— add๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ๋„ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ์— ํฌํ•จ๋œ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฐฐ๊ฒฝ์ƒ‰&์ „๊ฒฝ์ƒ‰, ํฐํŠธ ๋“ฑ์˜ ์„ค์ •์„ ๋”ฐ๋ฅธ๋‹ค.

  • Component[] getComponents() : ์ปจํ…Œ์ด๋„ˆ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์–ป๋Š”๋‹ค.

  • Component getComponent(int n) : ์ปจํ…Œ์ด๋„ˆ์— n๋ฒˆ์จฐ๋กœ ์ถ”๊ฐ€๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์–ป๋Š”๋‹ค.

  • Component getComponentAt(int x, int y) : ์ปจํ…Œ์ด๋„ˆ์˜ ์ง€์ • ์œ„์น˜(x, y)์— ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์–ป๋Š”๋‹ค.

  • Component add(Component comp) : ์ปจํ…Œ์ด๋„ˆ์— ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

  • void remove(Component comp) : ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ง€์ •๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

  • Insets getInsets() : ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฒฝ๊ณ„์˜ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” Inset๊ฐ์ฒด๋ฅผ ์–ป๋Š”๋‹ค.

  • LayoutManager getLayout() : ์ปจํ…Œ์ด๋„ˆ์— ์„ค์ •๋˜์–ด ์žˆ๋Š” LayoutManager๋ฅผ ์–ป๋Š”๋‹ค.

  • void setLayout(LayoutManager mgr) : ์ปจํ…Œ์ด๋„ˆ์— LayoutManager๋ฅผ ์„ค์ •ํ•œ๋‹ค.



AWT์˜ ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ

์ด์ œ AWT๋ฅผ ์ด์šฉํ•œ GUIํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์‚ฌ์šฉ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ข…๋ฅ˜ ๋ฐ ๊ธฐ๋ณธ์  ๊ธฐ๋Šฅ์„ ์‹ค์Šต์œผ๋กœ ์•Œ์•„๋ณธ๋‹ค.
โœ… AWT๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋ณ„๋„์˜ ์„ค์น˜๋Š” ํ•„์š”์—†์œผ๋ฉฐ, import java.awt.*; ๋กœ ์ž„ํฌํŠธ๋งŒ ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.


Frame ํ”„๋ ˆ์ž„

  • Frame์€ GUIํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐ€์žฅ ๋Œ€ํ‘œ์  ์ปดํฌ๋„ŒํŠธ์ด์ž, ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.
  • titlebar, ์ตœ๋Œ€ํ™”๋ฒ„ํŠผ, ์ตœ์†Œํ™”๋ฒ„ํŠผ, ๋‹ซ๊ธฐ๋ฒ„ํŠผ์„ ๊ฐ€์ง„๋‹ค.
  • ํฌ๊ธฐ ์กฐ์ ˆ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋‹จ, ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์€ ๋ˆŒ๋Ÿฌ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฒคํŠธ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ๋”ฐ๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ๋™์ž‘ํ•œ๋‹ค.
    • ์‹คํ–‰์„ ๋ฉˆ์ถ”๋ ค๋ฉด ์ฝ˜์†”์ฐฝ์—์„œ ์ •์ง€๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ์ž‘์—…๊ด€๋ฆฌ์ž์—์„œ ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค.

Frame์˜ ๋ฉ”์„œ๋“œ

  • Frame(String title) : Frame์„ ์ƒ์„ฑํ•œ๋‹ค.
    • title์€ Frame์˜ titlebar์— ๋ณด์—ฌ์งˆ text๋ฅผ ๋งํ•œ๋‹ค(ํ•„์ˆ˜)
  • String getTitle() : titlebar์— ์žˆ๋Š” text๋ฅผ ์–ป๋Š”๋‹ค.
  • void setTitle(String title) : titlebar์˜ text๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.
  • void setState(int state) : Frame์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
    • state์—๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    1. Frame.ICONIFIED : Frame์„ ์ตœ์†Œํ™” ์ƒํƒœ๊ฐ€ ๋˜๊ฒŒ ํ•œ๋‹ค.
    2. Frame.NORMAL : Frame์„ ์ •์ƒ์ƒํƒœ(์ตœ์†Œํ™” ์ด์ „ ์ƒํƒœ)๊ฐ€ ๋˜๊ฒŒ ํ•œ๋‹ค.
  • int getState() : Frame์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • void setResizable(boolean resizable) : Frame์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝ๊ฐ€๋Šฅ(true)/๋ถˆ๊ฐ€๋Šฅ(false) ํ•˜๊ฒŒ ํ•œ๋‹ค.
    • false์ผ ๋•Œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ Frame์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.

Frame ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class FrameTest {
    public static void main(String[] args) {
        Frame f = new Frame("Login"); // Frame ๊ฐ์ฒด ์ƒ์„ฑ. ๊ด„ํ˜ธ ์•ˆ์€ Frame์˜ title์— ํ•ด๋‹น.
        f.setSize(300, 200) ; // Frame์˜ ํฌ๊ธฐ๋ฅผ ์„ค์ •.
        f.setVisible(true); // ์„ค์ •์ž‘์—…์ด ๋ชจ๋‘ ๋๋‚˜๋ฉด ๋งจ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ”„๋ ˆ์ž„์„ ํ™”๋ฉด์— ๋ณด์ด๊ฒŒ ํ•œ๋‹ค.
        // Frame๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ํ™”๋ฉด์— ๋ณด์ด์ง„ ์•Š๋Š”๋‹ค. ๋ฐ˜๋“œ์‹œ ์ด ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    }
}

Frame์„ ํ™”๋ฉด ์ค‘์•™์— ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•˜๊ธฐ

import java.awt.*;

public class FrameTest2 {
    public static void main(String[] args) {
        Frame f = new Frame("Login");
        f.setSize(300,200);

        Toolkit toolkit = Toolkit.getDefaultToolkit(); // ๊ตฌํ˜„๋œ Toolkit๊ฐ์ฒด๋ฅผ ์–ป๋Š”๋‹ค
        Dimension screenSize = toolkit.getScreenSize(); // ํ™”๋ฉด์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•œ๋‹ค.

        // Frame์„ ํ™”๋ฉด ๊ฐ€์šด๋ฐ ์œ„์น˜ํ•˜๊ฒŒ ํ•˜๊ธฐ
        // : Frame์˜ ์œ„์น˜๋ฅผ ํ™”๋ฉดํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜๊ฐ’์—์„œ Frameํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜๊ฐ’์„ ๋บ€ ์œ„์น˜๋กœ ํ•œ๋‹ค.
        // x์ถ• ์œ„์น˜ : ํ™”๋ฉด ๋„ˆ๋น„ / 2 - Frame ๋„ˆ๋น„ / 2
        // y์ถ• ์œ„์น˜ : ํ™”๋ฉด ๋†’์ด / 2 - Frame ๋†’์ด / 2
        f.setLocation(screenSize.width/2 - 150, screenSize.height/2 - 100);
        f.setVisible(true); // ๋งˆ์ง€๋ง‰์œผ๋กœ ์ƒ์„ฑ๋œ Frame์„ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•œ๋‹ค.
    }
}

Button ๋ฒ„ํŠผ

  • Button : ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ–ˆ์„ ๋•Œ ์–ด๋–ค ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋„๋ก ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

Button์˜ ๋ฉ”์„œ๋“œ

  • Button(String label) : ์ง€์ •๋œ label์„ ๊ฐ€์ง„ Button์„ ์ƒ์„ฑํ•œ๋‹ค.
    • label : Button์œ„์— ๋‚˜ํƒ€๋‚  text๋ฅผ ๋งํ•œ๋‹ค.
  • String getLabel() : Button์— ๋‚˜ํƒ€๋‚˜ ์žˆ๋Š” text๋ฅผ ์–ป๋Š”๋‹ค.
  • void setLabel(String label) : Button์— ๋‚˜ํƒ€๋‚˜ ์žˆ๋Š” text๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

Button ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class ButtonTest {
    public static void main(String[] args) {
        Frame f = new Frame("Login");
        f.setSize(300,200);

        Button b = new Button("ํ™• ์ธ");// "ํ™• ์ธ"์ด๋ผ๋Š” ๊ธ€์ž๊ฐ€ ์žˆ๋Š” Button ์ƒ์„ฑ
        b.setSize(100,50); // Button์˜ ํฌ๊ธฐ ์„ค์ •

        f.add(b); // ์ƒ์„ฑ๋œ Button์„ Frame์— ํฌํ•จ์‹œํ‚จ๋‹ค.
        f.setVisible(true);
    }
}

๋ ˆ์ด์•„์›ƒ ๋งค๋‹ˆ์ € Layout Manager (Button ํฌ๊ธฐ ์„ค์ •)

์œ„ ์˜ˆ์ œ์—์„œ ๋ฒ„ํŠผ ํฌ๊ธฐ๋ฅผ ํ”„๋ ˆ์ž„๋ณด๋‹ค ์ž‘๊ฒŒ ์„ค์ •ํ•ด๋„ ํ”„๋ ˆ์ž„์— ๊ฝ‰ ์ฐจ๋Š” ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚œ๋‹ค.
์ด๋Š” Frame์— ์„ค์ •๋˜์–ด ์žˆ๋Š” Layout Manager(๋ ˆ์ด์•„์›ƒ ๋งค๋‹ˆ์ €) ๋•Œ๋ฌธ์ด๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ์—๋Š” ๋ ˆ์ด์•„์›ƒ๋งค๋‹ˆ์ €๋ฅผ ์„ ํƒ์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ ˆ์ด์•„์›ƒ๋งค๋‹ˆ์ €๋Š” ์ปจํ…Œ์ด๋„ˆ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๋งˆ๋‹ค, ์ปจํ…Œ์ด๋„ˆ์— ํฌํ•จ๋œ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด ์ค€๋‹ค.
  • ์žฅ์ ) ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ˆ˜๋™์ ์œผ๋กœ ์ผ์ผ์ด ์ปจํ…Œ์ด๋„ˆ ๋‚ด ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์น˜์— ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • ๋‹ค์–‘ํ•œ ๋ ˆ์ด์•„์›ƒ ๋งค๋‹ˆ์ €์˜ ์ข…๋ฅ˜์™€ ํŠน์„ฑ์ด ์žˆ๋‹ค. - ์•ž์œผ๋กœ ๋ฐฐ์šฐ๊ฒŒ ๋  ๊ฒƒ์ž„.
    • Frame์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๋ ˆ์ด์•„์›ƒ๋งค๋‹ˆ์ €๋Š” BorderLayout์ด๋‹ค.
  • ์ง€์ •๋œ ๋ ˆ์ด์•„์›ƒ๋งค๋‹ˆ์ € ์„ค์ •์„ ํ•ด์ œํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐฐ์น˜๋˜์ง€ ์•Š๋Š”๋‹ค.
    • ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ,์œ„์น˜ ๋“ฑ์„ ์„ค์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    • setLocation(), setSize() ๋ฅผ ํ†ตํ•ด ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ์„ค์ •.

์•„๋ž˜๋Š” ๋ ˆ์ด์•„์›ƒ๋งค๋‹ˆ์ €๋ฅผ ํ•ด์ œํ•˜๊ณ  ์ง์ ‘ ๋ฒ„ํŠผ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.

import java.awt.*;

public class ButtonTest2 {
    public static void main(String[] args) {
        Frame f = new Frame("Login");
        f.setSize(300, 200);
        f.setLayout(null); // ๋ ˆ์ด์•„์›ƒ๋งค๋‹ˆ์ €์˜ ์„ค์ •์„ ํ•ด์ œํ•œ๋‹ค.

        Button b = new Button("ํ™• ์ธ");
        b.setSize(100,50);
        b.setLocation(100,75); // Frame๋‚ด์—์„œ Button์˜ ์œ„์น˜ ์„ค์ •

        f.add(b);
        f.setVisible(true);
    }
}

Choice

  • Choice : ์—ฌ๋Ÿฌ item์ด ์žˆ๋Š” ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๊ณ , ๊ทธ ์ค‘ ํ•œ ๊ฐ€์ง€๋ฅผ ์„ ํƒํ•˜๋„๋ก ํ•œ๋‹ค.
    • (์ฝค๋ณด๋ฐ•์Šค combo box / ๋“œ๋ž๋‹ค์šด ๋ฆฌ์ŠคํŠธ๋ฐ•์Šค drop-down listbox)

Choice์˜ ๋ฉ”์„œ๋“œ

  • void add(String item) : Choice์— item์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  • void remove(String item) : Choice์—์„œ item์„ ์ œ๊ฑฐํ•œ๋‹ค.
  • void remove(int index) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์˜ item์„ ์ œ๊ฑฐํ•œ๋‹ค.
    • AWT์—์„œ๋„ index๋Š” 0๋ฒˆ์งธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค! ์ฒซ ๋ฒˆ์งธ item์˜ ์ธ๋ฑ์Šค = 0.
  • void removeAll() : Choice์˜ ๋ชจ๋“  item์„ ์ œ๊ฑฐํ•œ๋‹ค.
  • void insert(String item, int index) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์— item์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  • String getItem(int index) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์˜ item์„ ์–ป๋Š”๋‹ค.
  • int getItemCount() : ํ˜„์žฌ Choice์— ์ถ”๊ฐ€๋˜์–ด ์žˆ๋Š” item์ด ๋ช‡ ๊ฐœ์ธ์ง€ ์•Œ๋ ค์ค€๋‹ค.
  • int getSelectedIndex() : ํ˜„์žฌ ์„ ํƒ๋˜์–ด์ ธ ์žˆ๋Š” item์˜ index๊ฐ’์„ ์–ป๋Š”๋‹ค.
  • String getSelectedItem() : ํ˜„์žฌ ์„ ํƒ๋˜์–ด์ ธ ์žˆ๋Š” item์„ ์–ป๋Š”๋‹ค.

Choice ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class ChoiceTest {
    public static void main(String[] args) {
        Frame f = new Frame("Choice - Select");
        f.setSize(300, 200);
        f.setLayout(null);

        Choice day = new Choice(); // Choice ๊ฐ์ฒด ์ƒ์„ฑ
        day.add("SUN"); // .add()๋ฅผ ํ†ตํ•ด Choice์˜ ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚  item๋“ค์„ ์ถ”๊ฐ€.
        day.add("MON");
        day.add("TUE");
        day.add("WED");
        day.add("THU");
        day.add("FRI");
        day.add("SAT");

        day.setSize(100,50);
        day.setLocation(100,70);

        f.add(day); // 
        f.setVisible(true);
    }
}

List ๋ฆฌ์ŠคํŠธ

  • List๋„ Choice์ฒ˜๋Ÿผ ๋ชฉ๋ก ์ค‘ ์›ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๊ฒŒ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • List์™€ Choice์˜ ๋‹ค๋ฅธ ์  :
    • List๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  item๋ชฉ๋ก์„ ๋ณด์—ฌ์ค€๋‹ค
    • List๋Š” item๋ชฉ๋ก ์ค‘์—์„œ ํ•˜๋‚˜ ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

List์˜ ๋ฉ”์„œ๋“œ

  • List(int rows, boolean multipleMode)

    • rows : ๋ช‡ ์ค„ ์งœ๋ฆฌ ํฌ๊ธฐ์˜ List๋ฅผ ๋งŒ๋“ค์ง€ ์ง€์ •.
    • multipleMode : ๋‹ค์ค‘์„ ํƒ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ง€์ •ํ•œ๋‹ค. (true - ๋‹ค์ค‘์„ ํƒ ๊ฐ€๋Šฅ)
  • List(int rows)

    • List์— ๋ณด์—ฌ์ค„ item ์ˆ˜๋งŒ ์ง€์ •ํ•œ๋‹ค.
    • ์œ„ ๋ฉ”์„œ๋“œ์™€ ๋‹ฌ๋ฆฌ multipleMode๊ฐ’์€ false๋กœ ์ž๋™์ง€์ •๋˜์–ด ๋‹ค์ค‘์„ ํƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์„ ์–ธ๋ฐฉ๋ฒ•์ด๋‹ค.
  • List()

    • rows์˜ ๊ฐ’์€ ๊ธฐ๋ณธ๊ฐ’์ธ 4๋กœ ์ง€์ •๋œ๋‹ค.
    • multipleMode์˜ ๊ฐ’์€ false๋กœ ์ž๋™์ง€์ •๋˜์–ด ๋‹ค์ค‘์„ ํƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์„ ์–ธ๋ฐฉ๋ฒ•.
  • void add(String item) : item์„ List์— ์ถ”๊ฐ€ํ•œ๋‹ค.

  • void add(String item, int index) : ์ง€์ • ์ธ๋ฑ์Šค์— item์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

  • void replaceItem(String newValue, int index) : ์ง€์ • ์ธ๋ฑ์Šค์˜ item์„ newValue๋กœ ๋ฐ”๊พผ๋‹ค.

  • void remove(String item) : List์—์„œ ํ•ด๋‹น item ์ œ๊ฑฐ

  • void remove(int index) : ์ง€์ • ์ธ๋ฑ์Šค์˜ item ์ œ๊ฑฐ

  • void removeAll() : List์˜ ๋ชจ๋“  item ์ œ๊ฑฐ

  • int getRows() : List์— ์Šคํฌ๋กค ์—†์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์•„์ดํ…œ์˜ ์ˆ˜๋ฅผ ์–ป๋Š”๋‹ค.

  • int getItemCount() : List์— ์žˆ๋Š” item์ด ๋ชจ๋‘ ๋ช‡ ๊ฐœ์ธ์ง€ ์•Œ๋ ค์ค€๋‹ค.

  • String getItem(int index) : ์ง€์ • ์ธ๋ฑ์Šค์˜ item์„ ์–ป๋Š”๋‹ค.

  • String[] getItems() : List์˜ ๋ชจ๋“  item์„ ์–ป๋Š”๋‹ค.

  • void select(int index) : ์ง€์ • ์ธ๋ฑ์Šค์˜ item์„ ์„ ํƒํ•œ๋‹ค.

  • void deselect(int index) : ์ง€์ • ์ธ๋ฑ์Šค์˜ item์„ ์„ ํƒํ•ด์ œํ•œ๋‹ค.

  • int getSelectedIndex() : ํ˜„์žฌ ์„ ํƒ๋œ item์˜ ์ธ๋ฑ์Šค๋ฅผ ์–ป๋Š”๋‹ค.

  • int[] getSelectedIndexes() : ํ˜„์žฌ ์„ ํƒ๋œ item๋“ค์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ชจ๋‘ ์–ป๋Š”๋‹ค.

    • multipleMode๊ฐ€ true์ธ ๊ฒฝ์šฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • String getSelectedItem() : ํ˜„์žฌ ์„ ํƒ๋œ item์„ ์–ป๋Š”๋‹ค.

  • String[] getSelectedItems() : ํ˜„์žฌ ์„ ํƒ๋œ item๋“ค์„ ์–ป๋Š”๋‹ค.

    • multipleMode๊ฐ€ true์ธ ๊ฒฝ์šฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • boolean isIndexSelected(int index) : ์ง€์ • ์ธ๋ฑ์Šค์˜ item์ด ์„ ํƒ๋˜์–ด์žˆ๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค.

  • void setMultipleMode(boolean b) : List๋ฅผ multipleMode๋กœ ํ•  ๊ฒƒ์ธ์ง€ ์„ค์ •.

    • b๊ฐ€ true์ด๋ฉด multipleMode๊ฐ€ ๋œ๋‹ค.

List ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class ListTest {
    public static void main(String[] args) {
        Frame f = new Frame("List - Select");
        f.setSize(300,200);
        f.setLayout(null);

        List selectOne = new List(6); // 6๊ฐœ ๋ชฉ๋ก์„ ๊ฐ€์ง„ List ์ƒ์„ฑ
        selectOne.setLocation(20,40);
        selectOne.setSize(100,120);
        selectOne.add("Student");
        selectOne.add("Teacher");
        selectOne.add("Driver");
        selectOne.add("Computer Programmer");
        selectOne.add("Sales Man");
        selectOne.add("Musician");
        selectOne.add("Director");

        // ์ƒ์„ฑ์ž์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž๊ฐ’์ด true์ด๋ฉด multipleMode๊ฐ€ ๋œ๋‹ค.
        List selectMany = new List(6, true);
        selectMany.setLocation(150,40);
        selectMany.setSize(100,120);
        selectMany.add("Student");
        selectMany.add("Teacher");
        selectMany.add("Driver");
        selectMany.add("Computer Programmer");
        selectMany.add("Sales Man");
        selectMany.add("Musician");
        selectMany.add("Director");

        f.add(selectOne);
        f.add(selectMany);
        f.setVisible(true);

    }
}

Label ๋ ˆ์ด๋ธ”

  • Label์„ ํ†ตํ•ด ํ™”๋ฉด์— ๊ธ€์ž๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ค๋ช…์ด๋‚˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ผ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

Label์˜ ์ฃผ์š” ๋ฉ”์„œ๋“œ

  • Label(String text, int alignment)

    • text : ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ผ ๊ธ€์ž
    • alignment : text์˜ ์ •๋ ฌ๋ฐฉ์‹
      • Label.LEFT Label.CENTER Label.RIGHT ์ค‘ ์„ ํƒํ•ด ์ง€์ •
  • Label(String text)

    • text๋ฅผ ๋‚˜ํƒ€๋‚ด๋˜ alignment๊ธฐ๋ณธ๊ฐ’์ธ ์™ผ์ชฝ์ •๋ ฌ๋กœ ์„ค์ •๋œ๋‹ค.
  • String getText() : Label์˜ text๋ฅผ ์–ป์–ด์˜จ๋‹ค

  • void setText(String text) : Label์˜ text๋ฅผ ์ฃผ์–ด์ง„ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ

  • void setAlignment(int alignment) : Label์˜ text์ •๋ ฌ์„ ์ง€์ •

Label ์‚ฌ์šฉํ•˜๊ธฐ

  • Frame์— ๋ ˆ์ด์•„์›ƒ๋งค๋‹ˆ์ €๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค.
    • .setSize() ๋˜๋Š” .setBounds()๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.
import java.awt.*;

public class LabelTest {
    public static void main(String[] args) {
        Frame f = new Frame("Login");
        f.setSize(300, 200);
        f.setLayout(null);

        // Label์„ ์ƒ์„ฑํ•˜๊ณ , ํฌ๊ธฐ์™€ ์œ„์น˜ ์ง€์ •.
        Label id = new Label("ID :");
        id.setBounds(50,50, 30,10);
        // 50,50 ์œ„์น˜์— ๊ฐ€๋กœ๊ธธ์ด 30, ์„ธ๋กœ๊ธธ์ด 10

        Label pwd = new Label("Password : ");
        pwd.setBounds(50,65, 100,10);

        f.add(id);
        f.add(pwd);
        f.setVisible(true);
    }
}

Checkbox, CheckboxGroup

  • Checkbox : boolean์ฒ˜๋Ÿผ true/false(๋˜๋Š” on/off) ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.
    • CheckboxGroup์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๊ฐ’์„ ์ค‘๋ณต์„ ํƒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • CheckboxGroup : ์—ฌ๋Ÿฌ ๊ฐ’๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋Š” radio button์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐ™์€ ๊ทธ๋ฃน ๋‚ด Checkbox์ค‘์—์„œ ํ•œ ๊ฐ€์ง€๋งŒ ์„ ํƒ๊ฐ€๋Šฅํ•˜๋‹ค.

Checkbox์˜ ๋ฉ”์„œ๋“œ

  • Checkbox(String text, boolean state) : Checkbox ๊ฐ์ฒด ์ƒ์„ฑ

    • text - Checkbox ์™€ ํ•จ๊ป˜ ๋ณด์—ฌ์งˆ text๋ฅผ ์ง€์ •
    • state - true์ด๋ฉด Checkbox๊ฐ€ ์„ ํƒ๋œ ์ƒํƒœ๋กœ, false์ด๋ฉด ์„ ํƒํ•ด์ œ๋œ ์ƒํƒœ๋กœ ์ƒ์„ฑ.
  • Checkbox(String text)

    • Checkbox์™€ ํ•จ๊ป˜ ๋ณด์—ฌ์งˆ text๋ฅผ ์ง€์ •. state๋Š” false(์„ ํƒํ•ด์ œ)๋กœ ์ƒ์„ฑ.
  • Checkbox()

    • text ์—†์ด Checkbox๋งŒ ๋‚˜ํƒ€๋‚จ. state๋Š” false(์„ ํƒํ•ด์ œ)๋กœ ์ƒ์„ฑ.
  • Checkbox(String text, CheckboxGroup group, boolean state)

    • group - CheckboxGroup ๊ฐ์ฒด์˜ ์ฐธ์กฐ. CheckboxGroup์„ ์ด์šฉํ•ด radio button์„ ๋งŒ๋“ ๋‹ค.
  • String getLabel() : Checkbox์˜ label์„ ์–ป๋Š”๋‹ค

  • void setLabel(String label) : Checkbox์˜ label์„ ์ฃผ์–ด์ง„ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

  • boolean getState() : Checkbox์˜ ์ƒํƒœ๋ฅผ ์–ป๋Š”๋‹ค. true์ด๋ฉด ์ฒดํฌ๋œ ์ƒํƒœ.

  • void setState(boolean state) : Checkbox์˜ ์ƒํƒœ๋ฅผ ์„ค์ •. state๋ฅผ true๋กœ ํ•˜๋ฉด Checkbox๊ฐ€ ์ฒดํฌ๋œ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

Checkbox ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class CheckboxTest {
    public static void main(String[] args) {
        Frame f = new Frame("Questions");
        f.setSize(305,250);
        // Frame์˜ LayoutManager๋ฅผ FlowLayout์œผ๋กœ ์„ค์ •.
        // -> ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ํฌ๊ธฐ, ์œ„์น˜๋ฅผ ๋”ฐ๋กœ ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋จ.
        f.setLayout(new FlowLayout());

        Label q1 = new Label("1. ๋‹น์‹ ์˜ ๊ด€์‹ฌ ๋ถ„์•ผ๋Š”? (๋‹ค์ค‘์„ ํƒ ๊ฐ€๋Šฅ)");
        Checkbox news = new Checkbox("news", true);
        Checkbox sports = new Checkbox("sports");
        Checkbox movies = new Checkbox("movies");
        Checkbox music = new Checkbox("music");

        f.add(q1); f.add(news); f.add(sports); f.add(movies); f.add(music);

        Label q2 = new Label("2. ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ๊ทน์žฅ์— ๊ฐ€์‹ญ๋‹ˆ๊นŒ?");
        CheckboxGroup group1 = new CheckboxGroup(); // ๊ทธ๋ฃนํ™” (ํ•˜๋‚˜๋งŒ ์„ ํƒ๊ฐ€๋Šฅ)
        Checkbox movies1 = new Checkbox("ํ•œ ๋‹ฌ์— ๋‘ ๋ฒˆ", group1, true);
        Checkbox movies2 = new Checkbox("์ผ์ฃผ์ผ์— ํ•œ ๋ฒˆ", group1, false);
        Checkbox movies3 = new Checkbox("์ผ์ฃผ์ผ์— ๋‘ ๋ฒˆ", group1, false);

        f.add(q2); f.add(movies1); f.add(movies2); f.add(movies3);

        Label q3 = new Label("3. ํ•˜๋ฃจ์— ์–ผ๋งˆ๋‚˜ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ๋‹ˆ๊นŒ?");
        CheckboxGroup group2 = new CheckboxGroup(); // ๊ทธ๋ฃนํ™” (ํ•˜๋‚˜๋งŒ ์„ ํƒ๊ฐ€๋Šฅ)
        Checkbox com1 = new Checkbox("5์‹œ๊ฐ„ ์ดํ•˜", group2, true);
        Checkbox com2 = new Checkbox("10์‹œ๊ฐ„ ์ดํ•˜", group2, false);
        Checkbox com3 = new Checkbox("15์‹œ๊ฐ„ ์ด์ƒ", group2, false);

        f.add(q3); f.add(com1); f.add(com2); f.add(com3);
        f.setVisible(true);
    }
}

TextField

  • TextField : ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๋Š” ์ปดํฌ๋„ŒํŠธ.
    • ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ํ•œ ์ค„๋งŒ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์–ด, ๋น„๊ต์  ์งง์€ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ.(์ด๋ฆ„, id, ๋น„๋ฐ€๋ฒˆํ˜ธ)..

TextField์˜ ๋ฉ”์„œ๋“œ

  • TextField(String text, int col) : TextField ๊ฐ์ฒด ์ƒ์„ฑ
    • text : TextField์— ๋ณด์—ฌ์งˆ text ์ง€์ •
    • col : (์ž…๋ ฅ๋ฐ›์„ ๊ธ€์ž์˜ ์ˆ˜) TextField์˜ ํฌ๊ธฐ ์ง€์ •.
  • void setEchoChar(char c) : ์ง€์ •๋œ ๋ฌธ์ž๋ฅผ EchoChar๋กœ ํ•œ๋‹ค (์ฃผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ์— ์‚ฌ์šฉ)
    • ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์— ๊ด€๊ณ„์—†์ด ํ™”๋ฉด์—๋Š” ์ง€์ •๋œ ๋ฌธ์žc๊ฐ€ ๋ณด์ด๊ฒŒ ๋œ๋‹ค.
  • int getColumns() : TextField์˜ col ์ˆ˜๋ฅผ ์–ป๋Š”๋‹ค.

TextComponent(TextField์˜ ์กฐ์ƒ)๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์€ ๋ฉ”์„œ๋“œ

  • void setText(String t) : TextField์˜ text๋ฅผ t๋กœ ํ•œ๋‹ค.
  • String getText() : TextField์˜ text๋ฅผ ์–ป๋Š”๋‹ค.
  • void select(int selectionStart, int selectionEnd) : selectionStart~selectionEnd๊นŒ์ง€์˜ text๋ฅผ ์„ ํƒ(ํ•˜์ด๋ผ์ดํŠธ).
  • void selectAll() : TextField์˜ ๋ชจ๋“  text๋ฅผ ์„ ํƒ๋œ ์ƒํƒœ๋กœ ๋งŒ๋“ ๋‹ค.
  • String getSelectedText() : TextField์˜ text์ค‘ ์„ ํƒ๋œ ๋ถ€๋ถ„์„ ์–ป๋Š”๋‹ค.
  • void setEditable(boolean b) : TextField์˜ text๋ฅผ ํŽธ์ง‘๊ฐ€๋Šฅ(true)/๋ถˆ๊ฐ€๋Šฅ(false)ํ•˜๊ฒŒ ์„ค์ •.

TextField ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class TextFieldTest {
    public static void main(String[] args) {
        Frame f = new Frame("Login");
        f.setSize(400,65);
        // ๋ ˆ์ด์•„์›ƒ๋งค๋‹ˆ์ €๋ฅผ FlowLayout๋กœ ํ•œ๋‹ค.
        f.setLayout(new FlowLayout());

        Label lid = new Label("ID : ", Label.RIGHT); // ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ
        Label lpwd = new Label("Password : ", Label.RIGHT);

        TextField id = new TextField(10); // 10๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์ด๋Š” ํฌ๊ธฐ๋กœ ์ƒ์„ฑ
        TextField pwd = new TextField(10); // 10๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์ด๋Š” ํฌ๊ธฐ๋กœ ์ƒ์„ฑ
        pwd.setEchoChar('*'); // ์ž…๋ ฅํ•œ ๊ฐ’ ๋Œ€์‹  *๊ฐ€ ๋ณด์ด๊ฒŒ ํ•œ๋‹ค.
        // ํ•œ ๊ธ€์ž์ด๋ฏ€๋กœ ํ™‘๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

        f.add(lid);
        f.add(id);
        f.add(lpwd);
        f.add(pwd);
        f.setVisible(true);
    }
}

TextArea

  • TextArea : ์—ฌ๋Ÿฌ ์ค„์˜ text๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ํŽธ์ง‘๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ.
    • ์Šคํฌ๋กค๋ฐ”๋ฅผ ์ด์šฉํ•ด ํ™”๋ฉด์— ๋ณด์ด๋Š” ๊ฒƒ ๋ณด๋‹ค ๋งŽ์€ ์–‘์˜ text๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.

TextArea์˜ ๋ฉ”์„œ๋“œ

(์„ค๋ช… : p.22)

  • TextArea(String text, int row, int col, int scrollbar) :
    • text : ๋ณด์—ฌ์งˆ ํ…์ŠคํŠธ
    • row : (ํ•„์ˆ˜) TextArea์˜ ์ค„ ์ˆ˜(์„ธ๋กœ ๊ธธ์ด)
    • col : (ํ•„์ˆ˜) TextArea์˜ ์—ด ์ˆ˜(๊ฐ€๋กœ ๊ธธ์ด)
    • scrollbar : TextAreadp ์‚ฌ์šฉํ•  scrollbar์˜ ์ข…๋ฅ˜ ๋ฐ ์‚ฌ์šฉ์—ฌ๋ถ€ ์ง€์ •
      • TextArea.SCROLLBARS_BOTH, TextArea.SCROLLBARS_NONE, TextArea.SCROLLBARS_HORIZONTAL_ONLY, TextArea.SCROLLBARS_VERTICAL_ONLY ์ค‘ ์„ ํƒ
  • int getRows(), int getColumns() : ํ–‰, ์—ด ๊ฐœ์ˆ˜ ์–ป๊ธฐ
  • void setRows(int rows), void setColumns(int columns) : ์ง€์ • ๊ฐ’์œผ๋กœ ํ–‰, ์—ด ๊ฐœ์ˆ˜ ์„ค์ •
  • void append(String str) : text ๋งจ ๋งˆ์ง€๋ง‰์— str ๋ง๋ถ™์ด๊ธฐ
  • void insert(String str, int pos) : text ์˜ ์ง€์ •์œ„์น˜ pos์— str์„ ๋„ฃ๊ธฐ
  • void replaceRange(String str, int start, int end)
  • void setText(String t), String getText()
  • void select(int selectionStart, int selectionEnd), void selectAll()
  • String getSelectedText()
  • void setEditable(boolean b)

TextArea ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class TextAreaTest {
    public static void main(String[] args) {
        Frame f = new Frame("Comments");
        f.setSize(400,220);
        f.setLayout(new FlowLayout());

        TextArea comments = new TextArea("ํ•˜๊ณ  ์‹ถ์€ ๋ง์„ ์ ์œผ์„ธ์š”.", 10, 50);

        f.add(comments);
        comments.selectAll(); // TextArea์˜ text ์ „์ฒด๊ฐ€ ์„ ํƒ๋˜๋„๋ก ํ•œ๋‹ค.
        f.setVisible(true);
    }
}

Scrollbar

  • ScrollBar : ์‚ฌ์šฉ์ž๊ฐ€ ์ •ํ•ด์ง„ ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š” ๊ฐ’์„ ์‰ฝ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ปดํฌ๋„ŒํŠธ.
  • ์ฃผ๋กœ ๋ณผ๋ฅจ ์„ค์ •, ์†๋„ ์กฐ์ ˆ, ์ƒ‰์ƒ ์„ ํƒ ๋“ฑ์— ์‚ฌ์šฉ.

Scrollbar์˜ ๋ฉ”์„œ๋“œ

(์„ค๋ช… : p.24)

  • Scrollbar() : ์•„๋ฌด ์˜ต์…˜ ์—†์ด ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • Scrollbar(int orientation, int value, int visible, int min, int max)
    • orientation : Scrollbar์˜ ์ข…๋ฅ˜.
      • Scrollbar.VERTICAL, Scrollbar.HORIZONTAL์ค‘ ํƒ1
    • value : Scrollbar์˜ ์ดˆ๊ธฐ๊ฐ’
    • visible : Scroll๋ฒ„ํŠผ(bubble) ์˜ ํฌ๊ธฐ
    • min : Scrollbar์˜ ์ตœ์†Œ๊ฐ’
    • max : Scrollbar์˜ ์ตœ๋Œ€๊ฐ’
  • int getValue()
  • void setValue(int newValue)

Scrollbar ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class ScrollbarTest {
    public static void main(String[] args) {
        Frame f = new Frame("Scrollbar");
        f.setSize(300,200);
        f.setLayout(null);

        Scrollbar hor = new Scrollbar(Scrollbar.HORIZONTAL, 0, 50, 0, 100);
        hor.setSize(100, 15);
        hor.setLocation(60,30);

        Scrollbar ver = new Scrollbar(Scrollbar.VERTICAL, 50, 20, 0, 100);
        ver.setSize(15, 100);
        ver.setLocation(30,30);

        f.add(hor);
        f.add(ver);
        f.setVisible(true);
    }
}

Canvas

  • Canvas : ๋นˆ ํ‰๋ฉด ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ. ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ฑฐ๋‚˜ ๊ธ€์ž๋ฅผ ์ ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ฃผ๋กœ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ฑฐ๋‚˜ ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ๋Š” ๊ณต๊ฐ„์œผ๋กœ ์‚ฌ์šฉ.
  • ์‚ฌ์šฉ์ž์ •์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.

Canvas ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class CanvasTest {
    public static void main(String[] args) {
        Frame f = new Frame("CanvasTest");
        f.setSize(300, 200);
        f.setLayout(null); // Frame์˜ LayoutManager ์„ค์ • ํ•ด์ œ

        Canvas c = new Canvas();
        c.setBackground(Color.pink); // ์บ”๋ฒ„์Šค ๋ฐฐ๊ฒฝ = ๋ถ„ํ™์ƒ‰
        c.setBounds(50, 50, 150, 100); // ์œ„์น˜(x์ถ•/y์ถ•), ๋„ˆ๋น„, ๋†’์ด

        f.add(c);
        f.setVisible(true);
    }
}

Panel

  • Panel : Frame๊ณผ ๊ฐ™์ด ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž๊ธฐ ์˜์—ญ ๋‚ด์— ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ.
  • Panel ์ž์‹ ์ด ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์— ํฌํ•จ๋˜๊ฑฐ๋‚˜, Panel ์•ˆ์— Panel์ด ํฌํ•จ๋˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ.
  • Frame๊ณผ์˜ ์ฐจ์ด์ 
    • titlebar๋‚˜ ๋ฒ„ํŠผ์ด ์ „ํ˜€ ์—†๊ณ , ๋น„์–ด์žˆ๋Š” ํ‰๋ฉด๊ณต๊ฐ„๋งŒ ์žˆ๋‹ค.
    • Panel์€ ์ปจํ…Œ์ด๋„ˆ์ด๋ฏ€๋กœ ์ž์‹ ๋งŒ์˜ ๋ ˆ์ด์•„์›ƒ์„ ์œ ์ง€ ๊ฐ€๋Šฅ - Panel์„ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์น˜๋ฅผ ๋‹ค์–‘ํ™”ํ• ์ˆ˜ ์žˆ๋‹ค.

Panel ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class PanelTest {
    public static void main(String[] args) {
        Frame f = new Frame("Panel");
        f.setSize(300,200);
        f.setLayout(null); // Frame์ด LayoutManager๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.

        Panel p = new Panel(); // Panel์€ LayoutManager๋ฅผ ์‚ฌ์šฉ - Panel์•ˆ์˜ ๋ฒ„ํŠผ ์œ„์น˜,ํฌ๊ธฐ๋Š” ์ž๋™๋ฐฐ์น˜.
        p.setBackground(Color.green);
        p.setSize(100, 100);
        p.setLocation(50, 50);

        Button ok = new Button("OK");

        p.add(ok); // Button์€ Panel์— ํฌํ•จ์‹œํ‚จ๋‹ค.
        f.add(p); // Panel์€ Frame์— ํฌํ•จ์‹œํ‚จ๋‹ค.
        f.setVisible(true);

    }
}

ScrollPane

  • ScrollPane : ์ปจํ…Œ์ด๋„ˆ์ด๋‚˜, ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹จ ํ•˜๋‚˜๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ œํ•œ๋œ ๊ณต๊ฐ„์—์„œ ํฌ๊ธฐ๊ฐ€ ํฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ ๋•Œ ์‚ฌ์šฉ.
  • ํฌํ•จ๋œ ์ปดํฌ๋„ŒํŠธ๋ณด๋‹ค ์ž๊ธฐ์ž์‹ ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์Šคํฌ๋กค๋ฐ”๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.

ScrollPane ๋ฉ”์„œ๋“œ

  • ScrollPane(int scrollbarDisplayPolicy)
    • scrollbarDisplayPolicy - ์•„๋ž˜ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ง€์ • (์Šคํฌ๋กค๋ฐ” ํ‘œ์‹œ ์—ฌ๋ถ€)
      • SCROLLBARS_ALWAYS, SCROLLBARS_AS_NEEDED, SCROLLBARS,NEVER
  • ScrollPane() ์ฒ˜๋Ÿผ ์•„๋ฌด ์„ค์ • ์—†์ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

ScrollPane ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class ScrollPaneTest {
    public static void main(String[] args) {
        Frame f = new Frame("ScrollPaneTest");
        f.setSize(300, 200);

        ScrollPane sp = new ScrollPane();
        Panel p = new Panel();
        p.setBackground(Color.green);
        p.add(new Button("์ฒซ๋ฒˆ์งธ")); // Button๋“ค์„ Panel์— ํฌํ•จ์‹œํ‚จ๋‹ค.
        p.add(new Button("๋‘๋ฒˆ์งธ"));
        p.add(new Button("์„ธ๋ฒˆ์งธ"));
        p.add(new Button("๋„ค๋ฒˆ์จฐ"));

        sp.add(p); // Panel์„ ScrollPane์— ํฌํ•จ์‹œํ‚จ๋‹ค
        f.add(sp); // ScrollPane์„ Frame์— ํฌํ•จ์‹œํ‚จ๋‹ค
        f.setVisible(true);
    }
}

Dialog

  • Dialog : ์ฃผ๋กœ ํ™”๋ฉด์— ๋ฉ”์‹œ์ง€์ฐฝ์„ ๋ณด์—ฌ์ค„ ๋•Œ ์‚ฌ์šฉ.
    • ์—๋Ÿฌ ๋ฐœ์ƒ์„ ์•Œ๋ฆด ๋•Œ, ํŒŒ์ผ ์‚ญ์ œ ์ „ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™•์ธ์„ ๋ฐ›์„ ๋•Œ .. ๋“ฑ
  • Dialog๋„ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ด๋‹ค.
  • Frame๊ณผ ์œ ์‚ฌํ•œ ๋ชจ์–‘์„ ํ•˜๊ณ  ์žˆ๋‹ค.

Dialog์˜ ๋ฉ”์„œ๋“œ

  • Dialog(Frame parent, String title, boolean modal) (์ƒ์„ฑ์ž)
    • parent : (ํ•„์ˆ˜) ์–ด๋–ค Frame์— ์†ํ•œ ๊ฒƒ์ธ์ง€ ์ง€์ •.
      • Dialog๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•˜๋‚˜์˜ Frame์ด Dialog์˜ parent๋กœ ์ง€์ •๋˜์–ด์•ผ ํ•จ.
      • ์ƒ์†์˜ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋Š” ์•„๋‹ˆ์ง€๋งŒ, Dialog๊ฐ€ ์–ด๋Š Frame๊ณผ ๊ด€๋ จ์žˆ๋Š”์ง€ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•จ์ž„.
    • title : (ํ•„์ˆ˜) Dialog์˜ titlebar์— ๋‚˜ํƒ€๋‚  text ์ง€์ •.
    • modal : Dialog๋ฅผ modal(ํ•„์ˆ˜์‘๋‹ต)๋กœ ํ•  ๊ฒƒ์ธ์ง€ ์ง€์ •. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด false๊ฐ€ ๋œ๋‹ค.
      • โ€ปmodal์€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋…์ ํ•œ๋‹ค๋Š” ์˜๋ฏธ. ๋ฐ˜๋Œ€๋ง์€ modeless.
    • true์ธ ๊ฒฝ์šฐ, ๋ถ€๋ชจ Frame์€ Dialog๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ ์ „๊นŒ์ง€๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.
      • ์ฃผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ค‘์š” ํ™•์ธ์„ ๋ฐ›์•„์•ผ ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ.
    • false์ธ ๊ฒฝ์šฐ, Dialog๊ฐ€ ์—ด๋ ค์žˆ์–ด๋„ ๋ถ€๋ชจ Frame์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • void show(), void hide() -> void setVisible(boolean b): Dialog ๋ณด์ด๊ธฐ/์ˆจ๊ธฐ๊ธฐ
  • void dispose() : Dialog ์‚ญ์ œ(ํ™”๋ฉด์— ์•ˆ ๋ณด์ด๊ฒŒ ํ•œ ํ›„, ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ)
  • String getTitle()
  • void setModal(boolean b)
  • void setResizable(boolean resizable) : Dialogํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝ๊ฐ€๋Šฅ/๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
    • ๊ธฐ๋ณธ์ ์œผ๋กœ Dialog๋Š” ํฌ๊ธฐ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅ.

Dialog ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class DialogTest {
    public static void main(String[] args) {
        Frame f = new Frame("Parent");
        f.setSize(300, 200);

        // parent Frame์„ f, modal์„ true(ํ•„์ˆ˜์‘๋‹ต Dialog)
        Dialog info = new Dialog(f, "Information", true);
        info.setSize(140, 90);
        info.setLocation(50,50); // parent Frame์ด ์•„๋‹Œ, ํ™”๋ฉด์ด ์œ„์น˜๊ธฐ์ค€์ด ๋จ.
        info.setLayout(new FlowLayout());
        // Dialog์˜ ๊ธฐ๋ณธ ๋ ˆ์•„์ด์›ƒ ๋งค๋‹ˆ์ €๋Š” BorderLayout์ด๊ธฐ ๋–„๋ฌธ์— FlowLayout๋กœ ๋ณ€๊ฒฝ.

        Label msg = new Label("This is modal Dialog", Label.CENTER);
        Button ok = new Button("ok");
// ์•„์ง ์•ˆ ๋ฐฐ์šด ๋‚ด์šฉ(์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ) - ok๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Dialog ์ฐฝ ์—†์• ๊ธฐ.
        ok.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //ok๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ˆ˜ํ–‰๋  ๋ฉ”์„œ๋“œ : Dialog ์—†์• ๊ธฐ.
                info.setVisible(false); // Dialog๋ฅผ ์•ˆ ๋ณด์ด๊ฒŒ ํ•œ๋‹ค.(์ˆจ๊น€)
                info.dispose(); // Dialog๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์—†์•ค๋‹ค.(์‚ญ์ œ)
                // ๋‘˜ ์ค‘ ์–ด๋Š ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด๋„ Dialog๋Š” ๋ณด์ด์ง€ ์•Š๊ฒŒ ๋˜๋ฉฐ, ๋ถ€๋ชจFrame์€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.
            }
        });

        info.add(msg);
        info.add(ok);

        f.setVisible(true); // Frame์„ ๋ณด์ด๊ฒŒ ํ•œ ๋‹ค์Œ,
        info.setVisible(true); // Dialog๋ฅผ ๋ณด์ด๊ฒŒ ํ•œ๋‹ค.
    }
}

FileDialog

  • FileDialog : ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” Dialog.
  • ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์ด ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด, ๋”ฐ๋กœ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

FileDialog ๋ฉ”์„œ๋“œ

  • FileDialog(Frame parent, String title, int mode) (์ƒ์„ฑ์ž)
    • parent : (ํ•„์ˆ˜) ์–ด๋–ค Frame์— ์†ํ•œ ๊ฒƒ์ธ์ง€ ์ง€์ •
    • title : (ํ•„์ˆ˜) FileDialog์˜ titlebar์— ๋‚˜ํƒ€๋‚  text ์ง€์ •
    • mode : FileDialog.LOAD(์—ด๊ธฐ), FileDialog.SAVE(์ €์žฅ) ์ค‘ ํ•˜๋‚˜ ์„ ํƒ
  • String getFile() : FileDialog์— ์˜ํ•ด ์„ ํƒ๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์–ป๋Š”๋‹ค.
  • String getDirectory() : FileDialog์— ์˜ํ•ด ์„ ํƒ๋œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ(path)๋ฅผ ์–ป๋Š”๋‹ค.
  • void setFile(String file), void setDirectory(String dir)
    • FileDialog์— ์ง€์ •๋œ ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •.

FileDialog ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class FileDialogTest {
    public static void main(String[] args) {
        Frame f = new Frame("Parent");
        f.setSize(300, 200);

        FileDialog fileOpen = new FileDialog(f, "ํŒŒ์ผ์—ด๊ธฐ", FileDialog.LOAD);

        f.setVisible(true); // Frame์„ ํ‘œ์‹œํ•˜๊ณ 
        fileOpen.setDirectory("c:\\"); // c ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์˜ ํŒŒ์ผ๋“ค์ด ๋ณด์ด๊ฒŒ ์—ด๊ธฐ
        fileOpen.setVisible(true); // FileDialog๋ฅผ ํ‘œ์‹œ.

        // FileDialog์—์„œ ํŒŒ์ผ์„ ์„ ํƒํ•œ ๋‹ค์Œ '์—ด๊ธฐ'๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด,
        // getFile()๊ณผ getDirectory()๋ฅผ ์ด์šฉํ•ด ์„ ํƒ๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„๊ณผ ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
        // ์•„๋ฌด๊ฒƒ๋„ ์„ ํƒํ•˜์ง€ ์•Š์„ ์‹œ, null์„ ๋ฐ˜ํ™˜.
        System.out.println(fileOpen.getDirectory() + fileOpen.getFile());
    }
}

Font

  • Font : Font์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ ๋’ค ์ปดํฌ๋„ŒํŠธ์˜ ๊ธ€์”จ์ฒด๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • setFont(Font f) : ์ปดํฌ๋„ŒํŠธ์— ์‚ฌ์šฉ๋˜๋Š” text์˜ ๊ธ€์”จ์ฒด๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Font ์ƒ์„ฑ์ž

  • Font(String name, int style, int size)
    • name : ์‚ฌ์šฉํ•  ํฐํŠธ์˜ ์ด๋ฆ„.
      • ๊ธฐ๋ณธ ์ œ๊ณต ํฐํŠธ : Serif, SansSerif, Dialog, DialogInput, Monospaced
      • ๋‹ค๋ฅธ ํฐํŠธ ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ๋Š” ๊ทธ ํฐํŠธ๊ฐ€ ์ปดํ“จํ„ฐ์— ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
      • ํ˜„์žฌ ์„ค์น˜๋œ Font๋ฆฌ์ŠคํŠธ ์–ป๊ธฐ : GraphicsEnvironment ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋“ค์„ ์ด์šฉํ•œ๋‹ค.
    • style : ํฐํŠธ์˜ ์Šคํƒ€์ผ ์ง€์ •.
      • Font.PLAIN, Font.BOLD, Font.ITALIC, Font.BOLD+Font.ITALIC ์ค‘ ์„ ํƒ.
    • size : ํฐํŠธ์˜ ํฌ๊ธฐ ์ง€์ •.

Font ์กฐํšŒํ•˜๊ธฐ

import java.awt.*;

public class FontList {
    public static void main(String[] args) {
        GraphicsEnvironment ge = null; // GraphicsEnvironment๊ฐ์ฒด์ƒ์„ฑ
        ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        Font[] fonts = ge.getAllFonts(); // ์‹œ์Šคํ…œ ๋‚ด์˜ ํฐํŠธ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ

        for(int i=0; i < fonts.length; i++) {
            System.out.println(fonts[i].getFontName()); // ํฐํŠธ ์ด๋ฆ„ ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅ
        }
    }
}

Font ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class FontTest {
    public static void main(String[] args) {
        Frame f = new Frame("Font Test");
        String abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

        Label abc1 = new Label(abc);
        Label abc2 = new Label(abc);
        Label abc3 = new Label(abc);
        Label abc4 = new Label(abc);
        Label abc5 = new Label(abc);

        // Font๋ฅผ ์„ค์ •
        Font f1 = new Font("Serif", Font.PLAIN, 20); // ๋ณดํ†ต์ฒด
        Font f2 = new Font("Serif", Font.ITALIC, 20); // ๊ธฐ์šธ์ž„์ฒด
        Font f3 = new Font("Serif", Font.BOLD, 20); // ๊ตต์€์ฒด
        Font f4 = new Font("Serif", Font.BOLD+Font.ITALIC, 20); // ๊ตต์€ ๊ธฐ์šธ์ž„์ฒด

        // ์„ค์ •ํ•œ Font๋ฅผ Label์— ์ ์šฉ
        abc1.setFont(f1);
        abc2.setFont(f2);
        abc3.setFont(f3);
        abc4.setFont(f4);

        f.setLayout(new FlowLayout());
        f.add(abc1);
        f.add(abc2);
        f.add(abc3);
        f.add(abc4);
        f.add(abc5); // ํฐํŠธ๋ฅผ ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š์œผ๋ฉด, ์ž์‹ ์ด ํฌํ•จ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ๋ณธ์„ค์ •์„ ๋”ฐ๋ฅธ๋‹ค.

        f.setSize(400, 200);
        f.setVisible(true);
    }
}

Color

  • Color : ์ƒ‰์„ ํ‘œํ˜„ํ•˜๋Š” ํด๋ž˜์Šค. ์›ํ•˜๋Š” RGB๊ฐ’์„ ๊ฐ€์ง€๊ณ  ๊ทธ ์ƒ‰๊น”์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ž์ฃผ ์“ฐ์ด๋Š” ์ƒ‰์€ static์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์–ด RGB๊ฐ’์„ ๋ชฐ๋ผ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • ์ฃผ๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐฐ๊ฒฝ์ƒ‰/์ „๊ฒฝ์ƒ‰ ์„ค์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ - setForeground(Color c), setBackground(Color c)์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ๋จ.

Color์˜ ์ƒ์„ฑ์ž / ๋ฉ”์„œ๋“œ

  • Color(int r, int g, int b, int a) ๋˜๋Š” Color(float r, float g, float b, float a)
    • r - red, g - green, b - blue.
      • r, g, b๋Š” ๋ชจ๋‘ 0255์˜ ์ •์ˆ˜๊ฐ’ ๋˜๋Š” 0.01.0์˜ ์‹ค์ˆ˜๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.
    • a - (์„ ํƒ) ์ƒ‰์˜ ๋ถˆํˆฌ๋ช…๋„๋ฅผ ์ง€์ •ํ•˜๋Š” alpha๊ฐ’์œผ๋กœ. ๊ฐ’์ด ํด์ˆ˜๋ก ๋ถˆํˆฌ๋ช…ํ•˜๋‹ค.
      • 0255์˜ ์ •์ˆ˜๊ฐ’ ๋˜๋Š” 0.01.0์˜ ์‹ค์ˆ˜๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.

Color ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class ColorTest {
    public static void main(String[] args) {
        Frame f = new Frame("Color Test");
        f.setLayout(new GridLayout(14, 2)); // ๊ฐ€๋กœ 14์ค„, ์„ธ๋กœ 2์ค„์˜ ํ‘œ? ์ƒ์„ฑ
        Panel p1 = new Panel(); p1.setBackground(Color.black);
        Panel p2 = new Panel(); p2.setBackground(Color.blue);
        Panel p3 = new Panel(); p3.setBackground(Color.cyan);
        Panel p4 = new Panel(); p4.setBackground(Color.darkGray);
        Panel p5 = new Panel(); p5.setBackground(Color.gray);
        Panel p6 = new Panel(); p6.setBackground(Color.green);
        Panel p7 = new Panel(); p7.setBackground(Color.lightGray);
        Panel p8 = new Panel(); p8.setBackground(Color.magenta);
        Panel p9 = new Panel(); p9.setBackground(Color.orange);
        Panel p10 = new Panel(); p10.setBackground(Color.pink);
        Panel p11 = new Panel(); p11.setBackground(Color.red);
        Panel p12 = new Panel(); p12.setBackground(Color.white);
        Panel p13 = new Panel(); p13.setBackground(Color.yellow);
        Panel p14 = new Panel(); p14.setBackground(new Color(50,100,100));
        // ์ƒˆ Color๊ฐ์ฒด ์„ ์–ธํ•ด RGB๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

        f.add(new Label("Color.black")); f.add(p1); // ์ƒ‰ ์ด๋ฆ„๊ณผ ์ƒ‰ Panel ์ถ”๊ฐ€.
        f.add(new Label("Color.blue")); f.add(p2);
        f.add(new Label("Color.cyan")); f.add(p3);
        f.add(new Label("Color.darkGray")); f.add(p4);
        f.add(new Label("Color.gray")); f.add(p5);
        f.add(new Label("Color.green")); f.add(p6);
        f.add(new Label("Color.lightGray")); f.add(p7);
        f.add(new Label("Color.magenta")); f.add(p8);
        f.add(new Label("Color.orange")); f.add(p9);
        f.add(new Label("Color.pink")); f.add(p10);
        f.add(new Label("Color.red")); f.add(p11);
        f.add(new Label("Color.white")); f.add(p12);
        f.add(new Label("Color.yellow")); f.add(p13);
        f.add(new Label("Color(50, 100, 100)")); f.add(p14);
        f.setSize(250, 300);
        f.setVisible(true);
    }
}


๋ฉ”๋‰ด ๋งŒ๋“ค๊ธฐ

๋ฉ”๋‰ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ

  • Frame์— ๋ฉ”๋‰ด๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” MenuComponent ํด๋ž˜์Šค์˜ MenuBar, Menu, MenuItem๊ณผ ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๋ชจ๋“  AWT์ปดํฌ๋„ŒํŠธ์˜ ์กฐ์ƒ์ด Componentํด๋ž˜์Šค์ธ ๊ฒƒ์ฒ˜๋Ÿผ, ๋ฉ”๋‰ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์กฐ์ƒ์€ MenuComponent์ด๋‹ค.

    • MenuComponentํด๋ž˜์Šค๋Š” MenuBar์™€ MenuItem์„ ์ž์‹์œผ๋กœ ๊ฐ–๊ณ ,
    • MenuItem์€ Menu/PopupMenu, CheckboxMenuItem์„ ์ž์‹์œผ๋กœ ๊ฐ–๋Š”๋‹ค.
  • ๊ณ„์ธตํ˜• ๋ฉ”๋‰ด : ํด๋”์ฒ˜๋Ÿผ Menu์— Menu๋ฅผ ๋‹ด์•„ ๊ณ„์ธตํ˜•์„ ๋ฉ”๋‰ด๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ตœ์ƒ์œ„ ๋ฉ”๋‰ด : ํ•ญ์ƒ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๋Š” ์ตœ์ƒ์œ„๋ฉ”๋‰ด๋ฅผ MenuBar์— ๋‹ด๊ณ , MenuBar๋Š” ๋‹ค์‹œ Frame์— ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๋ฉ”๋‰ด ์ž‘์„ฑ์ด ๋๋‚œ๋‹ค.

  • Menu : Menu์™€ MenuItem์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค.

    • ๊ณ„์ธตํ˜• ๋ฉ”๋‰ด : Menu์— Menu๋ฅผ ํฌํ•จ์‹œํ‚จ๋‹ค.
  • MenuBar : Menu๋งŒ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. MenuItem์€ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค.

  • MenuItem : Menu์— ํฌํ•จ๋œ๋‹ค.

  • PopupMenu : ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‚˜ํƒ€๋‚˜๋Š”, ์œ„์น˜๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋ฉ”๋‰ด.

    • Frame๋‚ด์˜ ์–ด๋””์„œ๋‚˜ ์‹คํ–‰ ๊ฐ€๋Šฅ. (= ์˜ค๋ฅธ์ชฝ ํด๋ฆญ)

๋ฉ”๋‰ด ์ปดํฌ๋„ŒํŠธ์˜ ๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž

  • setHelpMenu(Menu menu)
    • OS๋งˆ๋‹ค Help๋ฉ”๋‰ด๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ์ทจ๊ธ‰๋œ๋‹ค. - ์œˆ๋„์šฐ์—์„œ๋Š” ํŠน๋ณ„ํžˆ ๋‹ค๋ฅด๊ฒŒ ๋‹ค๋ค„์ง€์ง€๋Š” ์•Š์Œ.
  • addSeparator()
  • CheckboxMenuItem(String name, boolean status)
  • CheckboxMenuItem(String name)

๋ฉ”๋‰ด ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ PopupMenu ์‚ฌ์šฉํ•˜๊ธฐ

๋ฉ”๋‰ด ์ปดํฌ๋„ŒํŠธ
import java.awt.*;

public class MenuTest {
    public static void main(String[] args) {
        Frame f = new Frame("Frame with Menu");
        f.setSize(300, 200);

        MenuBar mb = new MenuBar(); // ๋ฉ”๋‰ด๋ฐ” ์„ ์–ธ
        Menu mFile = new Menu("File"); // ๋ฉ”๋‰ด ์„ ์–ธ

        MenuItem miNew = new MenuItem("New");
        MenuItem miOpen = new MenuItem("Open");
        Menu mOthers = new Menu("Others"); // MenuItme์ด ์•„๋‹Œ Menu.
        MenuItem miExit = new MenuItem("Exit");

        mFile.add(miNew);//Menu์— MenuItem๋“ค์„ ์ถ”๊ฐ€.
        mFile.add(miOpen);
        mFile.add(mOthers); // Menu์— Menu ์ถ”๊ฐ€.
        mFile.addSeparator(); // ๋ฉ”๋‰ด ๋ถ„๋ฆฌ์„  ์ถ”๊ฐ€.
        mFile.add(miExit);

        MenuItem miPrint = new MenuItem("Print ...");
        MenuItem miPreview = new MenuItem("Print Preview");
        MenuItem miSetup = new MenuItem("Print Setup ...");
        mOthers.add(miPrint);
        mOthers.add(miPreview);
        mOthers.add(miSetup); // Others์— ํ•˜์œ„ ๋ฉ”๋‰ด๋“ค์„ ๋งŒ๋“ค์–ด ๋„ฃ๋Š”๋‹ค.

        Menu mEdit = new Menu("Edit");
        Menu mView = new Menu("View");
        Menu mHelp = new Menu("Help");
        CheckboxMenuItem miStatusBar = new CheckboxMenuItem("Statusbar");
        mView.add(miStatusBar); // View์— ์ƒํƒœ๋ฐ” ์ถ”๊ฐ€

        mb.add(mFile); // MenuBar์— Menu๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
        mb.add(mEdit);
        mb.add(mView);
        mb.setHelpMenu(mHelp); // mHelp๋ฅผ HelpMenu๋กœ ์ง€์ •.

        f.setMenuBar(mb); // Frame์— MenuBar๋ฅผ ํฌํ•จ์‹œํ‚จ๋‹ค.
        f.setVisible(true);
    }
}
PopupMenu
import java.awt.*;
import java.awt.event.*; // ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€.

public class PopupMenuTest {
    public static void main(String[] args) {
        final Frame f = new Frame("PopupMenu Test");
        f.setSize(300, 200);

        final PopupMenu pMenu = new PopupMenu("Edit");

        // final ? ๋ฉ”์„œ๋“œ ๋‚ด์— ์ •์˜๋œ ํด๋ž˜์Šค์—์„œ๋Š”,
        // ๊ฐ™์€ ๋ฉ”์„œ๋“œ ๋‚ด์˜ ์ง€์—ญ๋ณ€์ˆ˜๋“ค ์ค‘ finalํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์–ธ ๊ฒƒ๋“ค๋งŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.
        // ์ต๋ช…ํด๋ž˜์Šค๋ฅผ main๋ฉ”์„œ๋“œ ๋‚ด์— ์ •์˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ.

        MenuItem miCut = new MenuItem("Cut");
        MenuItem miCopy = new MenuItem("Copy");
        MenuItem miPaste = new MenuItem("Paste");
        pMenu.add(miCut); // PopupMenu์— MenuItem๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
        pMenu.add(miCopy);
        pMenu.add(miPaste);

        f.add(pMenu); // PopupMenu๋ฅผ Frame์— ์ถ”๊ฐ€ํ•œ๋‹ค.
        f.addMouseListener(new MouseAdapter() { // ์ต๋ช…ํด๋ž˜์Šค
            public void mousePressed(MouseEvent me) {
                // ์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด PopupMenu๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ค€๋‹ค
                if (me.getModifiers() == me.BUTTON3_MASK)
                    pMenu.show(f, me.getX(), me.getY()); // Frame๋‚ด์—์„œ ๋งˆ์šฐ์Šคํฌ์ธํ„ฐ์˜ x,y์ขŒํ‘œ ์–ป๊ธฐ
            }
        });
        f.setVisible(true);
    }
}


๋ ˆ์ด์•„์›ƒ ๋งค๋‹ˆ์ € Layout Manager

  • ๋ ˆ์ด์•„์›ƒ ๋งค๋‹ˆ์ € : ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์น˜๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.
    • ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€ / ์ปจํ…Œ์ด๋„ˆ ํฌ๊ธฐ ๋ณ€๊ฒฝ .. ๋“ฑ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐฐ์น˜, ์žฌ๋ฐฐ์น˜๋ฅผ ์ž๋™ ์ฒ˜๋ฆฌ.

๋ ˆ์ด์•„์›ƒ ๋งค๋‹ˆ์ €์˜ ์ข…๋ฅ˜ (5๊ฐ€์ง€)

  • ์ปจํ…Œ์ด๋„ˆ ๋‹น ํ•˜๋‚˜์˜ ๋ ˆ์ด์•„์›ƒ๋งค๋‹ˆ์ €๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • BorderLayout
    • FlowLayout
    • GridLayout
    • CardLayout
    • GridbagLayout
  • ํ•œ Frame์— ์—ฌ๋Ÿฌ ๋ ˆ์ด์•„์›ƒ๋งค๋‹ˆ์ €๋ฅผ ์‚ฌ์šฉํ•ด ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฐฐ์น˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

    • Frame์— ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„ฃ๊ณ , ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋ณ„๋กœ ๋ ˆ์ด์•„์›ƒ์„ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.
    • (p.48 ๊ณ„์‚ฐ๊ธฐ ์˜ˆ์ œ ์ฐธ๊ณ )

์ปจํ…Œ์ด๋„ˆ๋ณ„ ๊ธฐ๋ณธ ๋ ˆ์ด์•„์›ƒ ๋งค๋‹ˆ์ €

  • ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ ˆ์ด์•„์›ƒ ๋งค๋‹ˆ์ €๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ๋‹ค.
    • FlowLayout - Panel, Applet
    • BorderLayout - Window, Dialog, Frame

BorderLayout

  • BorderLayout :

    • ์ปจํ…Œ์ด๋„ˆ๋ฅผ North, South, East, West, Center(๋™,์„œ,๋‚จ,๋ถ,์ค‘์•™) ์˜ 5์˜์—ญ์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.
    • ๊ฐ ์˜์—ญ์— ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋งŒ์„ ๋ฐฐ์น˜ํ•œ๋‹ค.
      • ํ•œ ์˜์—ญ์— ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์น˜ํ•˜๋ฉด, ๋งˆ์ง€๋ง‰์œผ๋กœ ์ถ”๊ฐ€ํ•œ ์ปดํฌ๋„ŒํŠธ๋งŒ ๋ณด์ธ๋‹ค
      • ํ•œ ์˜์—ญ์— ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ ๋„ฃ์œผ๋ ค๋ฉด Panel์— ๋„ฃ๊ณ  ๊ทธ Panel์„ ์˜์—ญ์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.
    • Window, Frame, Dialog์˜ ๊ธฐ๋ณธ layout์ด๋‹ค.
  • Frame์˜ ํฌ๊ธฐ๋ฅผ ์ƒํ•˜๋กœ ๋Š˜๋ ธ์„ ๋•Œ

    • West, Center, East ์˜์—ญ์˜ ๊ธธ์ด๋งŒ ์ƒํ•˜๋กœ ๋Š˜์–ด๋‚˜๊ณ , North South ์˜์—ญ์—๋Š” ์•„๋ฌด๋Ÿฐ ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค.
  • Frame์˜ ํฌ๊ธฐ๋ฅผ ์ขŒ์šฐ๋กœ ๋Š˜๋ ธ์„ ๋•Œ

    • North, Center, South์˜์—ญ์˜ ๊ธธ์ด๋งŒ ์ขŒ์šฐ๋กœ ๋Š˜์–ด๋‚˜๊ณ , West East ์˜์—ญ์—๋Š” ์•„๋ฌด๋Ÿฐ ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค.

BorderLayout์˜ ๋ฉ”์„œ๋“œ

  • BorderLayout() ๋˜๋Š” BorderLayout(int hgap, int vgap) (์ƒ์„ฑ์ž)
    • hgap : (์„ ํƒ) ์ขŒ์šฐ ๊ฐ„๊ฒฉ
    • vgap : (์„ ํƒ) ์ƒํ•˜ ๊ฐ„๊ฒฉ
  • add(String name, Component c) ๋˜๋Š” add(Component c, String name)
    • ๊ฐ ์˜์—ญ์— ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฉ”์„œ๋“œ.
    • 5์˜์—ญ์„ ๋ชจ๋‘ ์ฑ„์›Œ์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ํ•„์š”ํ•œ ์˜์—ญ๋งŒ ์ถ”๊ฐ€ํ•œ๋‹ค.

BorderLayout ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class BorderLayoutTest {
    public static void main(String[] args) {
        Frame f = new Frame("BorderLayoutTest");
        f.setSize(200, 200);
        // Frame ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ BorderLayout๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ๋จ

        f.setLayout(new BorderLayout());
        Button north = new Button("North");
        Button south = new Button("South");
        Button east = new Button("East");
        Button west = new Button("West");
        Button center = new Button("Center");

        // Frame์˜ 5๊ฐœ์˜ ๊ฐ ์˜์—ญ์— Button์„ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•œ๋‹ค
        f.add(north, "North"); // f.add("North",north); . ์™€ ๊ฐ™์ด ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค
        f.add(south, "South"); // South์˜ ๋Œ€์†Œ๋ฌธ์ž ์ •ํ™•ํžˆ
        f.add(east, "East"); // East๋Œ€์‹  , BorderLayout.EAST  ์‚ฌ์šฉ๊ฐ€๋Šฅ
        f.add(west, "West");
        f.add(center, "Center");

        f.setVisible(true);
    }
}

FlowLayout

  • FlowLayout
    • ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์ถ”๊ฐ€๋˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ์™ผ์ชฝ-์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐฐ์น˜๋œ๋‹ค.
    • ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉด ์•„๋žซ์ค„์— ์ถ”๊ฐ€๋œ๋‹ค. (์ค„๋ฐ”๊ฟˆ)
      • ๋งˆ์น˜ ์›Œ๋“œํ”„๋กœ์„ธ์Šค์—์„œ ๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ๋ฐฉ์‹.
    • ์ปดํฌ๋„ŒํŠธ ์ •๋ ฌ์ด ๊ฐ€๋Šฅ : ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ/๊ฐ€์šด๋ฐ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ํ™”๋ฉด์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ด๋ฉด..
      • ๋ฐฐ์น˜๋Š” ๋ฐ”๋€Œ๋˜, ๊ฐ™์€ ๋ฐฐ์น˜๋ฐฉ์‹์„ ๋”ฐ๋ฅธ๋‹ค.
      • ์ปดํฌ๋„ŒํŠธ ํฌ๊ธฐ๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค.

FlowLayout์˜ ๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž

  • FlowLayout() ๋˜๋Š” FlowLayout(int align, int hgap, int vgap) (์ƒ์„ฑ์ž)
    • ์•„๋ฌด๊ฒƒ๋„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ€์šด๋ฐ์ •๋ ฌ, ์ƒํ•˜์ขŒ์šฐ์—ฌ๋ฐฑ 5px์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.
    • align : ์ปดํฌ๋„ŒํŠธ์˜ ์ •๋ ฌ ์ง€์ •.
      • FlowLayout.LEFT, FlowLayout.CENTER, FlowLayout.RIGHT ์ค‘ ํƒ1
    • hgap : ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์ขŒ์šฐ ๊ฐ„๊ฒฉ ์ง€์ •.
    • vgap : ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์ƒํ•˜ ๊ฐ„๊ฒฉ ์ง€์ •.

FlowLayout ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class FlowLayoutTest {
    public static void main(String[] args) {
        Frame f = new Frame("FlowLayoutTest");
        f.setSize(250, 100);
        f.setLayout(new FlowLayout(FlowLayout.LEFT)); // ์™ผ์ชฝ์ •๋ ฌ์˜  FlowLayout ์ƒ์„ฑ

        f.add(new Button("์ฒซ๋ฒˆ์งธ"));
        f.add(new Button("๋‘๋ฒˆ์งธ"));
        f.add(new Button("์„ธ๋ฒˆ์งธ"));
        f.add(new Button("๋„ค๋ฒˆ์งธ"));
        f.add(new Button("๋‹ค์„ฏ๋ฒˆ์งธ"));
        f.setVisible(true);
    }
}

GridLayout

  • GridLayout

    • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ…Œ์ด๋ธ”(ํ‘œ)์ฒ˜๋Ÿผ ํ–‰(row),์—ด(col)๋กœ ๋‚˜๋ˆ„์–ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฐฐ์น˜ํ•œ๋‹ค.
    • ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๋ชจ๋‘ ๊ฐ™์€ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค.
    • ์ปดํฌ๋„ŒํŠธ๋“ค์€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฒซ ๋ฒˆ์งธ ํ–‰์˜ ์—ด๋“ค - ๋‘ ๋ฒˆ์งธ ํ–‰์˜ ์—ด๋“ค - .. ์˜ ์ˆœ์„œ๋กœ ์ฑ„์›Œ์ง„๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด..
      • ๊ฐ ์˜์—ญ์ด ๋ชจ๋‘ ๊ฐ™์€ ๋น„์œจ๋กœ ์ปค์ง€๊ฑฐ๋‚˜ ์ž‘์•„์ง„๋‹ค.
  • GridbagLayout

    • GridbagLayout์€ GridLayout๊ณผ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ด๊ณผ ํ–‰์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐ ์˜์—ญ์€ ์„œ๋กœ ๋‹ค๋ฅธ ํฌ๊ธฐ๋กœ ์ง€์ •๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ธ์ ‘ํ•œ ์—ด ๋˜๋Š” ํ–‰์œผ๋กœ์˜ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • (HTML๋ฌธ์„œ์—์„œ์˜ Table๋ ˆ์ด์•„์›ƒ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค.)

GridLayout์˜ ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ

  • GridLayout(int row, int col) ๋˜๋Š” GridLayout(int row, int col, int hgap, int vgap) (์ƒ์„ฑ์ž)
    • row, col : (ํ•„์ˆ˜) ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ช‡ ๊ฐœ์˜ ํ–‰/์—ด๋กœ ๋‚˜๋ˆŒ์ง€ ์ง€์ •.
    • hgap, vgap : ๊ฐ ์˜์—ญ ๊ฐ„ ์ขŒ์šฐ/์ƒํ•˜ ๊ฐ„๊ฒฉ์„ ์ง€์ •.

GridLayout ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;

public class GridLayoutTest {
    public static void main(String[] args) {
        Frame f = new Frame("GridLayoutTest");
        f.setSize(150, 150);
        f.setLayout(new GridLayout(3, 2));
        // 3ํ–‰ 2์—ด์˜ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค

        f.add(new Button("1")); // ์ถ”๊ฐ€๋˜๋Š” ์ˆœ์„œ๋Œ€๋กœ Button์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์˜€๋‹ค
        f.add(new Button("2"));
        f.add(new Button("3"));
        f.add(new Button("4"));
        f.add(new Button("5"));
        f.add(new Button("6"));

        f.setVisible(true);
    }
}

CardLayout

  • CardLayout
    • ์—ฌ๋Ÿฌ ํ™”๋ฉด์„ ์Šฌ๋ผ์ด๋“œ์ฒ˜๋Ÿผ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ด์•„์›ƒ์ด๋‹ค.
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ CardLayout์— ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ,
    • ์ˆœ์„œ๋Œ€๋กœ/์ž„์˜๋กœ ์ปจ๋„ค์ด๋„ˆ๋ฅผ ์„ ํƒํ•ด ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.
    • (์˜ˆ์‹œ) ์„ค์น˜๋งˆ๋ฒ•์‚ฌ ์ฒ˜๋Ÿผ ๋‹จ๊ณ„๋ณ„๋กœ ํ™”๋ฉด์„ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ.

CardLayout์˜ ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ

  • CardLayout() ๋˜๋Š” CardLayout(int hgap, int vgap) (์ƒ์„ฑ์ž)
    • hgap, vgap : ์ปจํ…Œ์ด๋„ˆ-CardLayout๊ฐ„์˜ ์ˆ˜ํ‰/์ˆ˜์ง ๊ฐ„๊ฒฉ ์ง€์ •.
  • add(Container parent, String name), show(Container parent, String name)
    • name : ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„
    • parent : ์ถ”๊ฐ€๋ /๋ณด์—ฌ์งˆ ์ปจํ…Œ์ด๋„ˆ
  • first(Container parent), last(Container parent)
  • previous(Container parent), next(Container parent)

CardLayout ์‚ฌ์šฉํ•˜๊ธฐ

import java.awt.*;
import java.awt.event.*;

public class CardLayoutTest {
    public static void main(String[] args) {
        final Frame f = new Frame("CardLayoutTest");
        final CardLayout card = new CardLayout(10, 10);
        f.setLayout(card); // CardLayout๋กœ ์„ค์ •

        Panel card1 = new Panel();
        card1.setBackground(Color.lightGray);
        card1.add(new Label("Card 1"));
        Panel card2 = new Panel();
        card2.add(new Label("Card 2"));
        card2.setBackground(Color.orange);
        Panel card3 = new Panel();
        card3.add(new Label("Card 3"));
        card3.setBackground(Color.cyan);

        f.add(card1, "1"); // Frame์— card1์„ "1"์ด๋ผ๊ณ  ์ด๋ฆ„ ๋ถ™์—ฌ ์ถ”๊ฐ€ํ•œ๋‹ค
        f.add(card2, "2");
        f.add(card3, "3");

        class Handler extends MouseAdapter {
            public void mouseClicked(MouseEvent e) {
                // ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ
                if (e.getModifiers() == e.BUTTON3_MASK) {
                    card.previous(f); // CardLayout์˜ ์ด์ „ Panel์„ ๋ณด์—ฌ์ค€๋‹ค
                } else {
                    card.next(f); // CardLayout์˜ ๋‹ค์Œ Panel์„ ๋ณด์—ฌ์ค€๋‹ค
                }
            }
        } // class Handler

        card1.addMouseListener(new Handler());
        card2.addMouseListener(new Handler());
        card3.addMouseListener(new Handler());

        f.setSize(200, 200);
        f.setLocation(200, 200);
        f.setVisible(true);

        card.show(f, "1"); // Frame์— ์ถ”๊ฐ€๋œ Component๋“ค ์ค‘ ์ด๋ฆ„์ด "1"์ธ ๊ฒƒ์„ ๋ณด์—ฌ์ค€๋‹ค.
    }
}