Object
|
Component
|
Container 일반컴포넌트 (JButton, JLabel, JList, JTable)
|
Panel Window
|
Frame Dialog
: Frame의 기본 레이아웃
5개의 정해진 위치에 배치 (각 영역에 하나씩만 배치 가능)
NORTH, WEST, CENTER, EAST, SOUTH 상수값 제공 (BorderLayout.NORTH)
: 행과 열로 구성된 격자로 배치
: 카드가 겹치는 형태로 배치
한 번에 단 하나의 컴포넌트만 보여준다
: Panel의 기본 레이아웃
왼쪽에서 오른쪽으로, 위에서 아래로 배치
: 사용자가 원하는 위치에 배치
문법 : 이벤트소스.addXXXListener(값);
예> btnOk.addActionListener(new MyButtonEvent());
: 이벤트 소스에서 발생된 이벤트를 처리하는 클래스
인터페이스로 제공됨 (JButton 인터페이스는 ActionListener)
public class JComponent01_JButton extends JFrame implements ActionListener {
JButton btnOk;
// 이 부분은 자동 생성
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JComponent01_JButton frame = new JComponent01_JButton;
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} // 자동 생성
// 생성자 형태로 메인에서 불러서 사용
// 자동 생성
public JComponent01_JButton() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane); // 자동 생성
btnOk = new JButton("ok");
contentPane.add(btnOk); // Design에서 버튼 추가하면 코드 자동 추가됨
// GUI 자신 클래스로 이벤트 처리 (문법 : 이벤트소스.addXXXListener(값);)
btnOk.addActionListener(this);
}
// 인터페이스 메서드 상속
@Override
public void actionPerformed(ActionEvent e) {
System.out.prinltln("ok"); // ok 버튼 눌렀을 때의 이벤트 설정
}
}
public class JComponent01_JButton extends JFrame {
// 이 부분은 자동 생성
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JComponent01_JButton frame = new JComponent01_JButton();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} // 자동 생성
// 생성자 형태로 메인에서 불러서 사용
// 자동 생성
public JComponent01_JButton1_gui와다른클래스() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane); // 자동 생성
JButton btnOk = new JButton("ok");
contentPane.add(btnOk); // Design에서 버튼 추가하면 코드 자동 추가됨
// 다른 클래스로 이벤트 처리 (문법 : 이벤트소스.addXXXListener(값);)
btnOk.addActionListener(new MyButtonEvent());
}
}
이벤트 처리 클래스 따로 만들기 (implements ActionListener하는 클래스)
public class MyButtonEvent implements ActionListener {
// 인터페이스 메서드 상속
@Override
public void actionPerformed(ActionEvent e){
System.out.prinltln("ok"); // ok 버튼 눌렀을 때의 이벤트 설정
}
}
public class JComponent01_JButton extends JFrame {
// 이 부분은 자동 생성
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JComponent01_JButton frame = new JComponent01_JButton();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} // 자동 생성
// 생성자 형태로 메인에서 불러서 사용
// 자동 생성
public JComponent01_JButton1_gui와다른클래스() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane); // 자동 생성
JButton btnOk = new JButton("ok");
contentPane.add(btnOk); // Design에서 버튼 추가하면 코드 자동 추가됨
// 익명 클래스로 이벤트 처리 (문법 : 이벤트소스.addXXXListener(값);)
btnOk.addActionListener (new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(">>>" + e.getActionCommand());
System.out.println("Oki doki");
}
});
// 람다식 참고
// btnOK.addActionListener(e -> System.out.println("Oki doki"));
}
}
e.getActionCommand() : 버튼 레이블 출력
e.getSource() : 버튼의 모든 정보 출력
@Override
public void actionPerformed(ActionEvent e) {
// System.out.println(e.getActionCommand()); 버튼 레이블 출력
// System.out.println(e.getSource()); 버튼의 모든 정보 출력
if("Ok".equals(e.getActionCommand())) {
System.out.println("Oki doki");
} else {
System.out.println("cancel");
// 버튼의 레이블 변경 기능
JButton xxx = (JButton)e.getSource(); // getSource() 리턴타입이 Object이기 때문에 형변환 해줘야됨
xxx.setText("CANCEL"); // 클릭하면 레이블이 CANCEL로 바뀐다
xxx.setBackground(Color.red);
}
}
JButton, JRadioButton : implements ActionListener
CheckBox : implements ItemListener