티스토리 뷰
GUI
: Java에서 그래픽 요소를 사용하여 사용자와 상호 작용하는 애플리케이션을 개발하는 데 사용되는 기술입니다.
종류 : Swing, JavaFX 및 AWT(추상 윈도우 툴킷) 등.
- 요즘 거의 버려짐
1. Swing
- Swing을 사용하여 다양한 종류의 컴포넌트를 만들 수 있다.
- 컴포넌트는 대화 상자, 버튼, 텍스트 상자, 레이블 및 테이블 등이며,
이러한 컴포넌트를 함께 배치하여 사용자가 그래픽 인터페이스와 상호 작용할 수 있도록 제작을 한다.
2. JavaFX
- Swing 대체품으로 활용.
- 다양한 컴포넌트 및 이펙트를 포함하며, 스타일링 및 애니메이션에 대한 강력한 지원도 제공하는 중.
3. AWT
- Java GUI의 초기 버전이었으며, 현재는 Swing 및 JavaFX와 함께 사용됩니다.
- Java의 기본 그래픽 기능을 포함함.
- AWT 컴포넌트는 플랫폼의 기본 컴포넌트를 사용하여 작성되며, 이는 Java의 이식성을 높여주는 역할을 한다.
자바 GUI의 기초 틀
자바 GUI가 켜지면
그 창 전체를 JFrame이라고 생각하면 편하다.
1. JFrame
: 사용자 인터페이스를 구성하는 최상위 컨테이너.
- JFrame을 생성하여 컴포넌트를 추가하고 배치함으로써, 사용자에게 표시되는 창을 만들 수 있다.
- 애플리케이션 창의 제목, 크기, 위치 및 종료 동작 등을 제어할 수 있습니다.
- 이벤트 처리를 위한 메서드를 제공하므로
사용자가 창의 닫기 버튼을 클릭하거나 다른 이벤트가 발생했을 때, 적절한 동작을 수행할 수 있음.
2. JPanel
: 컨테이너.
- 다른 컴포넌트들을 포함하는 데 사용된다.
- 또한 사용자 인터페이스의 일부를 나타내는 데 사용됩니다.
- 일반적으로 JPanel은 JFrame 내에 배치되며, 다른 컴포넌트들을 그룹화하는 데 사용된다..
- JPanel은 레이아웃 매니저를 사용하여 컴포넌트의 위치 및 크기를 관리하며,
이를 통해 사용자 인터페이스를 구성할 수 있게 된다.

- 자바 GUI를 연습하면, Controller와 View를 합쳐보는 훈련이 된다.
GUI 예제 1
class GUIMake extends JFrame implements ActionListener { // 전체 화면이 됨.
private JTextField jtf; // 한 줄 글자
private JTextArea jta; // 여러줄
GUIMake() {
JButton jb = new JButton("Save");
jtf = new JTextField("파일 이름을 입력하시오", 20);
jta = new JTextArea("파일에 쓸 글을 적으시오", 20, 20);
Container ct = getContentPane(); //객체생성x, JFrame에서 사용할 수 있게 만드는 애.
// 컨테이너는 JFrame에서 제공. 컨테이너에 담아줌.
ct.setLayout(new FlowLayout()); // 내용 넘치면 자동으로 다음줄에 작성
JPanel p = new JPanel();
ct.add(jta);
p.add(jtf);
p.add(jb);
ct.add(p); // 마지막에 판넬 자체를 통으로 붙여버렸음(세트화되어서 딱 붙음)
// 아래로 내려간 이유는, 옆에 붙이려했는데 넘쳐서 자동으로 내려감.
jb.addActionListener(this); //Save버튼 누르면 액션리스너가 동작하게 만듦.
//=>버튼 눌렀으면 actionPerformed()메서드가 동작
// this를 붙인 이유는 내가 ActionListener를 구현했으므로 나에게 있으니까.
setTitle("Test1");
setSize(500, 500);
setVisible(true); // 보여줄거니?
}
public void actionPerformed(ActionEvent ae) {
try {
// jtf에서 입력된 문자열을 가져와서 s 변수에 저장합니다.
String s = jtf.getText();
// s에 해당하는 파일을 생성하기 위해 FileOutputStream을 생성합니다.
FileOutputStream fos = new FileOutputStream(s);
// 생성된 FileOutputStream을 사용하여 DataOutputStream을 생성합니다.
DataOutputStream dos = new DataOutputStream(fos);
// jta에서 입력된 문자열을 UTF-8 형식으로 파일에 저장합니다.
dos.writeUTF(jta.getText());
// FileOutputStream을 닫습니다.
fos.close();
// 생성된 파일 이름을 콘솔에 출력합니다.
System.out.println(s + " 파일 생성~~~~");
}
// 예외 발생 시 처리합니다.
catch (Exception e) {
// 예외 처리 내용을 작성합니다.
}
}
}
public class GUITest1 {
public static void main(String[] args) {
new GUIMake();
}
}
실행 결과
GUI 예제 2
class Hi extends JFrame implements ActionListener {
JLabel jl; // JLabel 멤버 변수를 선언합니다.
Hi(){
// 컨테이너를 가져와서 FlowLayout을 설정합니다.
Container ct = getContentPane();
ct.setLayout(new FlowLayout());
// 두 개의 버튼을 생성합니다.
JButton j1 = new JButton("10");
JButton j2 = new JButton("20");
// JLabel을 생성하고 컨테이너에 추가합니다.
jl = new JLabel("하이!!!!!");
ct.add(j1);
ct.add(j2);
ct.add(jl);
// 버튼에 ActionListener를 등록합니다
j1.addActionListener(this);
j2.addActionListener(this);
// 프레임의 제목과 크기를 설정하고 보이도록 설정합니다.
setTitle("Two");
setSize(500,500);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
String input = ae.getActionCommand(); // 이벤트에서 액션 명령을 가져와서 input 변수에 저장합니다.
String result = "힘내세요!!!!" + input; // result 변수에 "힘내세요!!!!"와 input 변수를 결합하여 저장합니다.
jl.setText(result); // JLabel의 텍스트를 result 변수로 설정합니다.
System.out.println(input);
}
}
public class GUITest2 {
public static void main(String[] args) {
new Hi();
}
}
실행 결과
'[개발] - Java > Mega' 카테고리의 다른 글
자바 퀴즈 아이디어 정리 (2) (0) | 2023.05.07 |
---|---|
자바 퀴즈 아이디어 정리 (1) (0) | 2023.05.07 |
Day32. 네트워크 (3) 예제 (0) | 2023.05.06 |
Day32. 네트워크 (2) TCP / UDP (0) | 2023.05.06 |
Day32. 네트워크 (1) TCP/IP, OSI 7계층 (0) | 2023.05.06 |