🐧Swing 프로그램을 작성하는 방법
- java.awt 패키지의 컴퍼넌트 또는 컨테이너 관련 클래스 대신 javax.swing 패키지의 컴퍼넌트 또는 컨테이너 관련 클래스를 사용하여 UI 구현
→ AWT 컴퍼넌트 또는 컨테이너 클래스 이름 앞에 J를 붙이면 Swing 컴퍼넌트 또는 컨테이너 클래스
- 프레임의 [닫기버튼]을 누른 경우 동작되는 기능을 변경하여 프레임 조작 가능
형식) JFrame.setDefaultCloseOperation(int operation);
→ operation 매개변수에는 DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE(기본값), DISPOSE_ON_CLOSE, EXIT_ON_CLOSE 중 하나의 상수를 사용하여 프레임의 조작 방법 설정
- 프레임을 직접 변경하지 않고 프레임의 Container 객체를 반환받아 변경 처리
→ 프레임의 배치관리자 변경, 프레임의 컴퍼넌트 부착, 프레임의 배경색 변경 등
package xyz.itwill.swing;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class SwingApp extends JFrame {
private static final long serialVersionUID = 1L;
//이벤트 처리하려고 필드 선언함
//JTextField 컴퍼넌트에서 문자열 입력 후 엔터를 치면 ActionEvent 발생
JTextField textField;
JTextArea textArea;
public SwingApp(String title) {
// TODO Auto-generated constructor stub
super(title);
textField=new JTextField();
textArea=new JTextArea("[홍길동]님이 입장하였습니다.\n");
//JScrollPane : 컴퍼넌트가 범위를 벗어날 경우 스크롤을 생성하기 위한 컨테이너
JScrollPane jScrollPane=new JScrollPane(textArea);
//JFrame.getContentPane() : 프레임의 컨테이너 기능을 제공하는 Container 객체를 반환하는 메소드
Container container=getContentPane();
container.add(jScrollPane, BorderLayout.CENTER);
container.add(textField, BorderLayout.SOUTH);
//Swing 프로그램에서는 모든 글꼴 사용 가능
textField.setFont(new Font("굴림체", Font.BOLD, 20));
textArea.setFont(new Font("굴림체", Font.BOLD, 20));
textArea.setFocusable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
textField.addActionListener(new TextEventHandle());
setBounds(800, 200, 400, 500);
setVisible(true);
}
public static void main(String[] args) {
new SwingApp("Swing");
}
public class TextEventHandle implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//TextComponent.getText() : JTextField 컴퍼넌트 또는 JTextArea 컴퍼넌트에 입력된 문자열을 얻어와 반환하는 메소드
String text=textField.getText();
if(!text.equals("")) {//입력된 문자열이 있는 경우
//JTextArea.append(String text) : JTextArea 컴퍼넌트에 문자열을 추가하여 출력하느 ㄴ메소드
textArea.append("[홍길동]"+text+"\n");
//TextComponent.setText(String text) : JTextField 컴퍼넌트 또는 JTextArea 컴퍼넌트에 입력된 문자열을 변경하는 메소드
textField.setText("");//초기화 처리
}
}
}
}