JOptionPane은 JComponent 클래스의 하위 클래스로, 간단한 코드만으로 모달(Modal) 대화 상자를 손쉽게 생성하고 커스터마이징할 수 있는 다양한 정적(static) 메서드를 제공합니다. 일반적으로 JDialog를 직접 사용하면 코드가 복잡해지기 때문에, 이러한 복잡성을 줄이기 위해 JOptionPane이 자주 활용됩니다.
JOptionPane은 기본적으로 질문(Question), 정보(Information), 경고(Warning), 오류(Error)라는 네 가지 표준 아이콘 중 하나를 대화 상자에 표시하며, 필요에 따라 개발자가 직접 지정한 사용자 지정 아이콘을 사용할 수도 있습니다.
JOptionPane의 4가지 대화 상자 유형
JOptionPane 클래스는 다음과 같은 네 가지 유형의 대화 상자를 화면에 표시하는 데 사용됩니다.
- MessageDialog(메시지 대화 상자) – 사용자에게 메시지를 전달하는 대화 상자로, 알림 효과를 높이기 위해 아이콘을 함께 표시할 수 있습니다.
- ConfirmDialog(확인 대화 상자) – 메시지를 전달하는 것뿐만 아니라, 사용자가 질문에 대해 예/아니오 등으로 답변할 수 있도록 하는 대화 상자입니다.
- InputDialog(입력 대화 상자) – 메시지 전달과 더불어 사용자가 텍스트를 입력할 수 있도록 허용하는 대화 상자입니다.
- OptionDialog(옵션 대화 상자) – 앞서 소개한 세 가지 유형의 기능을 모두 포괄하여, 가장 유연하게 구성할 수 있는 대화 상자입니다.
예제 코드
import javax.swing.*;
public class JoptionPaneTest {
public static void main(String[] args) {
JFrame frame = new JFrame("JoptionPane Test");
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
JOptionPane.showMessageDialog(frame, "Hello Java");
JOptionPane.showMessageDialog(frame, "You have less amount, please recharge","Apocalyptic message", JOptionPane.WARNING_MESSAGE);
int result = JOptionPane.showConfirmDialog(null, "Do you want to remove item now?");
switch (result) {
case JOptionPane.YES_OPTION:
System.out.println("Yes");
break;
case JOptionPane.NO_OPTION:
System.out.println("No");
break;
case JOptionPane.CANCEL_OPTION:
System.out.println("Cancel");
break;
case JOptionPane.CLOSED_OPTION:
System.out.println("Closed");
break;
}
String name = JOptionPane.showInputDialog(null, "Please enter your name.");
System.out.println(name);
JTextField userField = new JTextField();
JPasswordField passField = new JPasswordField();
String message = "Please enter your user name and password.";
result = JOptionPane.showOptionDialog(frame, new Object[] {message, userField, passField},
"Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);
if (result == JOptionPane.OK_OPTION)
System.out.println(userField.getText() + " " + new String(passField.getPassword()));
System.exit(0);
}
}실행 결과
위 예제를 실행하면 순서대로 다음과 같은 대화 상자가 화면에 나타납니다.
- 기본 정보 아이콘이 포함된 단순 메시지 대화 상자
- 경고 아이콘과 사용자 지정 제목이 표시되는 경고 메시지 대화 상자
- 예 / 아니요 / 취소 버튼을 선택할 수 있는 확인 대화 상자
- 텍스트 입력란이 제공되는 입력 대화 상자
- 사용자 이름과 비밀번호 필드를 직접 구성한 로그인용 옵션 대화 상자





정리
JOptionPane은 몇 줄의 코드만으로도 메시지 알림, 사용자 확인, 텍스트 입력, 복합적인 폼 구성까지 처리할 수 있는 강력한 도구입니다. 각 대화 상자 유형의 특성을 잘 이해하고 상황에 맞게 활용하면, Swing 기반 Java 애플리케이션에서 사용자와의 상호작용을 훨씬 간결하고 효율적으로 구현할 수 있습니다.