JFrame
자바에서 구현되는 하나의 창
package ex1_frame;
import javax.swing.JFrame;
public class Ex1_Jframe {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setTitle("첫번째 프레임");
//f.setLocation(30,30); // x,y 좌표
//f.setSize(400,400); // 너비, 높이
f.setBounds(30,30,400,400); // x,y,너비,높이
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 종료
f.setVisible(true); // 보이게 만들어주기
}
}

JButton
package ex2_jbutton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class JButtonTest extends JFrame {
JButton jbtn1, jbtn2, jbtn3;
public JButtonTest() {
super("버튼(JButton) 추가!");
setLayout(null); // 레이아웃 요소 수동배치
jbtn1 = new JButton("1");
jbtn2 = new JButton("2");
jbtn3 = new JButton("3");
jbtn1.setBounds(10,10,70,70);
jbtn2.setBounds(90,10,70,70);
jbtn3.setBounds(170,10,70,70);
add(jbtn1);
add(jbtn2);
add(jbtn3);
setBounds(30,30,400,400);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonTest();
}
}

JButton Event
package ex2_jbutton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
public class JButtonEventTest {
public static void main(String[] args) {
JFrame f = new JFrame("ActionEvent 처리");
f.setLayout(null);
JButton btnArray[] = new JButton[4];
btnArray[0] = new JButton("입력");
btnArray[1] = new JButton("확인");
btnArray[2] = new JButton("옵션");
btnArray[3] = new JButton("메세지");
btnArray[0].setBounds(10, 10, 80, 80);
btnArray[1].setBounds(100, 10, 80, 80);
btnArray[2].setBounds(200, 10, 80, 80);
btnArray[3].setBounds(300, 10, 80, 80);
ActionListener al = new ActionListener() { // 공통감지자
@Override
public void actionPerformed(ActionEvent e) {
//e.getActionCommand() : 내가 누른 버튼에 쓰여있는 문자열 반환
switch(e.getActionCommand()) {
case "입력":
System.out.println("입력버튼 누름");
break;
case "확인":
System.out.println("확인버튼 누름");
break;
case "옵션":
System.out.println("옵션버튼 누름");
break;
case "메세지":
System.out.println("메세지버튼 누름");
break;
}
}
};
for (int i = 0; i < btnArray.length; i++) {
btnArray[i].addActionListener(al);
f.add(btnArray[i]);
}
f.setBounds(40, 40, 420, 400);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

JPanel
package ex3_jpanel;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
//JPanel은 JFrame에 붙히는 중간 컨테이너
//요소를 그룹별로 묶어서 관리하기 편해짐
//배치관리자
//FlowLayout : 왼쪽에서 오른쪽으로 배치, 오른쪽에 공간이 없으면 아래로 배치
//BorderLayout : 동서남북 + 중앙 5개의 영역으로 나눠서 배치
//GridLayout : 2차원 표 모양으로 n x n 으로 설정하며 왼쪽에서 오른쪽, 위에서 아래 순으로 배치
//CardLayout : 요소를 포개어 배치
//Null : 레이아웃을 사용하지 않으며 수동으로 배치
public class Ex1_JPanel extends JFrame {
public Ex1_JPanel() {
super("FlowLayout Ex");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p1 = new JPanel();
p1.setBackground(Color.YELLOW); // 배경색 지정
p1.setLayout(new FlowLayout()); // FlowLayout 지정
//p1.setLayout(new GridLayout(3,2));
//p1.setLayout(new BorderLayout());
for (int i = 1; i <= 5; i++) {
String str = Integer.toString(i);
p1.add(new JButton(str));
}
add(p1);
setBounds(30, 30, 300, 200);
setVisible(true);
}
public static void main(String[] args) {
new Ex1_JPanel();
}
}
