์์ ๋ ์ง/์ ๋ฆฌ๋ ์ง
2022.04.12/2022.04.16
ํ์ต์ฃผ์
- 08 GUI
ํ์ต๋ด์ฉ
08 GUI
- 3๊ฐ์ง ๋ฐฐ์น๊ด๋ฆฌ์์ 1๊ฐ์ง ๋ฐฐ์น๋ฐฉ์(๋ฐฐ์น๊ด๋ฆฌ์ ์ฌ์ฉx)
๋ฐฐ์น๊ด๋ฆฌ์(Layout manager)
- ์ปจํ ์ด๋ ์์ ์กด์ฌํ๋ ์ปดํฌ๋ํธ์ ์์น์ ํฌ๊ธฐ๋ฅผ ์๋์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฐ์ฒด
- ์ ๋ ์์น๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๋ค์ด ๋ฐฐ์น๋ ๊ฒฝ์ฐ, ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ํ ๋ฐ์๋ ๋ค๋ฅธ๊ฒ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐฐ์น๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํํ๋ค.
FlowLayout
- ์ปดํฌ๋ํธ๋ค์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐฐ์นํ๋ค.
- ๊ธฐ๋ณธ์ ์ธ ์ ๋ ฌ ๋ฐฉ๋ฒ: ์ค์ ์ ๋ ฌ
- ํจ๋๊ณผ ์ ํ๋ฆฟ์ ๋ํดํธ ๋ฐฐ์น ๊ด๋ฆฌ์
- setComponentOrientation() / applyComponentOrientation() ์ฌ์ฉํ์ฌ ๋ฐฐ์น ๋ฐฉํฅ์ ์ค์ ํ๋ค.
- → ์) panel.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
FlowLayout ํด๋์ค[์ฐธ๊ณ ]
์์ฑ์ | ์ค๋ช |
FlowLayout() | ๊ธฐ๋ณธ ์ค์ : ์ค์ ๋ฐฐ์น, ๊ฐ๊ฒฉ(๊ฐ๋ก, ์ธ๋ก): ๊ฐ๊ฐ 5ํฝ์ |
FlowLayout(int align) | ์ ๋ ฌ ๋งค๊ฐ ๋ณ์๋, FlowLayout.LEADING (์ผ์ชฝ ์ ๋ ฌ) FlowLayout.CENTER (์ค์ ์ ๋ ฌ) FlowLayout.TRAILING (์ค๋ฅธ์ชฝ ์ ๋ ฌ) ๊ธฐ๋ณธ ์ค์ : ์ค์ ๋ฐฐ์น, ๊ฐ๊ฒฉ(๊ฐ๋ก, ์ธ๋ก): ๊ฐ๊ฐ 5ํฝ์ |
FlowLayout(int align, int hgap, int vgap) | ์ ๋ ฌ ๋ฐฉ์, ์ํ ๊ฐ๊ฒฉ(hgap), ์์ง ๊ฐ๊ฒฉ(vgap) |
- LEADING, CENTER, TRAILING ์ ์์
- ์ผ์ชฝ, ์ค์, ์ค๋ฅธ์ชฝ ์ ๋ ฌ์ ๊ฐ๊ฐ 0, 1, 2 ์ธ๋ฐ ์ซ์ ๋์ ์์๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฌํ ์ ์๋ค.
BorderLayout
- 5๊ฐ ์์ญ์ผ๋ก ๊ตฌ๋ถํ๊ณ , ๊ฐ ์์ญ์ ์ปดํฌ๋ํธ๋ฅผ ๋ฐฐ์นํ๋ค. (์, ํ, ์ข, ์ฐ, ์ค์)
- ํ๋ ์์ ๋ํดํธ ๋ฐฐ์น ๊ด๋ฆฌ์
- BorderLayout์ผ๋ก ์ปดํฌ๋ํธ ์ถ๊ฐ ์, ์์ญ์ ์ง์ ํด์ผํ๋ค.
- → ์) panel.add(aComponent, BorderLayou.PAGE_START); // ๋ถ์ชฝ๋ฐฐ์น
- ์์ญ ๋ฏธ์ง์ ์, ๋ชจ๋ ์ปดํฌ๋ํธ๋ ์ค์์ ๋ฐฐ์น๋๋ค. (์ฌ๋ฌ๊ฐ์ ๊ฒฝ์ฐ, ๊ฒน์ณ์ ธ์ ๋ง์ง๋ง ์ถ๊ฐ ์ปดํฌ๋ํธ๋ง ๋ณด์)
์: PAGE_START (๋๋ NORTH)
ํ: PAGE_END (๋๋ SOUTH)
์ข: LINE_START (๋๋ WEST)
์ฐ: LINE_END ( )
์ค์: CENTER
BorderLayout ํด๋์ค[์ฐธ๊ณ ]
์์ฑ์ ๋๋ ๋ฉ์๋ | ์ค๋ช |
BorderLayout(int hgap, int vgap) | ์ํ ๊ฐ๊ฒฉ hgap๊ณผ ์์ง ๊ฐ๊ฒฉ vgap |
setHgap(int) | ์ปดํฌ๋ํธ ์ฌ์ด์ ์ํ ๊ฐ๊ฒฉ ์ค์ |
setVgap(int) | ์ปดํฌ๋ํธ ์ฌ์ด์ ์์ง ๊ฐ๊ฒฉ ์ค์ |
GridLayout
- ์ปดํฌ๋ํธ๋ค์ ๊ฒฉ์๋ชจ์(ํ๋ ฌ)์ผ๋ก ๋ฐฐ์นํ๋ค.
- ๋ชจ๋ ์ปดํฌ๋ํธ์ ํฌ๊ธฐ๊ฐ ๋์ผํ๋ค. (ํ๊ณผ ์ด์ ๊ธฐ์ค์ผ๋ก ํ๊ธฐ ๋๋ฌธ)
GridLayout ํด๋์ค[์ฐธ๊ณ ]
์์ฑ์ | ์ค๋ช |
GridLayout(int rows, int cols) | rows ํ๊ณผ cols ์ด |
GridLayout(int rows, int cols, int hgap, int vgap) | rows ํ๊ณผ cols ์ด, hgap๊ณผ vgap์ ์ํ/์์ง ๊ฐ๊ฒฉ |
๋ฐฐ์น ๊ด๋ฆฌ์์ ์ค์ ๋ฐฉ๋ฒ
1. ์์ฑ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ (์ปจํ ์ด๋ ์์ฑ์ ๋งค๊ฐ๋ณ์๋ก ์ง์ )
→ JPanel panel = new JPanel(new BorderLayout());
2. setLayout() ๋ฉ์๋ ์ด์ฉ (์์ฑ๋ ์ปจํ ์ด๋์ ์ค์ ์๋ก ์ง์ ) (์ด๋ฏธ ์์ฑ๋ ํจ๋ ์ฐ๊ฒฐ๋ฒ)
→ panel.setLayout(new FlowLayout());
๋ฐฐ์น ๊ด๋ฆฌ์๋ฅผ ์ค์ ํ์ง ์์ผ๋ฉด ๋ํดํธ๊ฐ ์คํ๋จ
์ ๋ ์์น๋ก ๋ฐฐ์นํ๊ธฐ
โ ๋ฐฐ์น ๊ด๋ฆฌ์๋ฅผ null๋ก ์ค์ ํ๋ค.
→ setlayout(null);
โก add() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ์ปจํ ์ด๋์ ์ถ๊ฐํ๋ค.
→ Button b = Button("Absolute Position Button");
→ add(b);
โข setBounds() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ์์น์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ค.
→ b.setBounds(x, y, w, h); // x์ขํ, y์ขํ, ๊ฐ๋กํฌ๊ธฐw, ์ธ๋กํฌ๊ธฐh
๋ฐฐ์น ๊ด๋ฆฌ์๋ ์ปดํฌ๋ํธ์ ์ธ๊ด ๋ณ๊ฒฝ์ด๋ ํฐํธ์ ํฌ๊ธฐ ๋ณ๊ฒฝ, ์ปจํ ์ด๋์ ํฌ๊ธฐ ๋ณ๊ฒฝ์ ์ฝ๊ฒ ์ ์ํ๋ค.
๊ทธ๋ฌ๋ ํน๋ณํ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ๋ค์ ๋ฐฐ์น ๊ด๋ฆฌ์ ์์ด ๋ฐฐ์นํด์ผ๋ง ํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ฆ, ์ปจํ ์ด๋ ์์ ์ปดํฌ๋ํธ๋ค์ ํฌ๊ธฐ์ ์์น๊ฐ ์ธ๋ถ์ ์ํฅ์ ๋ฐ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๊ทธ๋ ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์น ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด null๋ก ์ค์ ํ๋ค.
setBounds()๋ setLocation(x,y)์ setSize(w,h)๋ฅผ ํ๋ฒ์ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋์ด๋ค.
ํ์ต๋ด์ฉ ์ดํด๋
90% ์ ๋. ํ๋ ์๊ณผ ํจ๋์ด ์กฐ๊ธ ํท๊ฐ๋ฆฐ๋ค.
ํ์ตํ๋ ๋์๋ณด๊ธฐ
์์ ๊ฐ ๋ณต์กํ ์๋ก ์ฌ์ฉํ๋ ๋ฉ์๋, ํด๋์ค ๋ฑ ๋ฐฐ์ด ์ง์์ ๋ง์ด ํ์ฉํด์ผํด์ ์กฐ๊ธ ์ด๋ ต๊ฒ ๋๊ปด์ก๋ค. ์ด๋ฒ์ฃผ๋ ๋ด์ฉ์ด ์ ์๋ฐ ์ ๋ฒ์ฃผ์ ๋ฐฐ์ด ๋ด์ฉ๊ณผ ์ด์ด์ง๋ ๋ด์ฉ์ด์ฌ์ ์ ๋ฒ์ฃผ ๊ฒ์ ํ์คํ๊ฒ ์์๋์ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
๋ค์ ํ์ต๊ณํ
์ธํฐํ์ด์ค, ๋๋ค์, ํจํค์ง
'Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐํ๋ก๊ทธ๋๋ฐ 9์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.05.08 |
---|---|
์๋ฐํ๋ก๊ทธ๋๋ฐ 7์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.04.25 |
์๋ฐํ๋ก๊ทธ๋๋ฐ 5์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.04.09 |
์๋ฐํ๋ก๊ทธ๋๋ฐ 4์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.04.03 |
์๋ฐ ๊ณต๋ถ ์ค ๊ถ๊ธํ ์ (0) | 2022.04.03 |