AWT:
java.awt
).Swing:
javax.swing
).JButton
, JTextField
, JLabel
, JPanel
, JComboBox
, 등.특징 | AWT | Swing |
---|---|---|
패키지 | java.awt | javax.swing |
컴포넌트 | 중량 컴포넌트 | 경량 컴포넌트 |
플랫폼 종속성 | 운영체제 종속 | 운영체제 독립적 |
외형 | 기본 GUI | 화려한 고급 GUI 지원 |
JFrame
에 부착.setTitle()
, setSize()
, setVisible()
메소드를 통해 설정.main()
메소드 작성:main()
에서 GUI를 생성하고 실행.import javax.swing.*;
public class MyFrame extends JFrame {
public MyFrame() {
setTitle("스윙 프레임");
setSize(300, 300);
setVisible(true);
}
public static void main(String[] args) {
new MyFrame();
}
}
독립 클래스:
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("버튼 클릭!");
}
}
JButton btn = new JButton("Click Me");
btn.addActionListener(new MyActionListener());
내부 클래스:
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("내부 클래스에서 처리!");
}
});
익명 클래스:
btn.addActionListener(e -> System.out.println("람다식 사용!"));
ActionEvent:
ActionListener
.actionPerformed(ActionEvent e)
.MouseEvent:
MouseListener
, MouseMotionListener
.mousePressed()
, mouseReleased()
, mouseDragged()
.KeyEvent:
KeyListener
.keyPressed()
, keyReleased()
, keyTyped()
.FlowLayout:
container.setLayout(new FlowLayout());
BorderLayout:
container.setLayout(new BorderLayout());
container.add(new JButton("Click"), BorderLayout.CENTER);
GridLayout:
container.setLayout(new GridLayout(2, 3));
Null Layout:
component.setBounds(50, 50, 100, 30);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(new JButton("Add"));
c.add(new JButton("Subtract"));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
System.exit(0);
마우스 클릭 이벤트
class MyMouseListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
System.out.println("클릭 위치: " + e.getX() + ", " + e.getY());
}
}
키보드 방향키로 텍스트 이동
public class MovingText extends JFrame {
private JLabel label = new JLabel("Hello");
public MovingText() {
setLayout(null);
label.setBounds(50, 50, 100, 30);
add(label);
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP: label.setLocation(label.getX(), label.getY() - 10); break;
case KeyEvent.VK_DOWN: label.setLocation(label.getX(), label.getY() + 10); break;
case KeyEvent.VK_LEFT: label.setLocation(label.getX() - 10, label.getY()); break;
case KeyEvent.VK_RIGHT: label.setLocation(label.getX() + 10, label.getY()); break;
}
}
});
setSize(400, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setFocusable(true);
requestFocus();
}
public static void main(String[] args) {
new MovingText();
}
}
컴포넌트 | 설명 |
---|---|
JButton | 버튼 |
JLabel | 텍스트 라벨 |
JTextField | 단일 줄 텍스트 입력 필드 |
JComboBox | 드롭다운 리스트 |
JPanel | 컨테이너 |