본문 바로가기

BackEnd/Java

[java]이것이 자바다 부록 Java UI 12-1 (Swing을 이용한 표준화된 다이얼로그)

728x90
반응형

(2) 표준화된 다이얼로그

   ▷ Swing은 자주 사용되는 표준화된 다이얼로그(MessageDialog, ConfirmDialog, InputDialog, OptionDialog)를 쉽게 생성하기 위해 JOptionPane 클래스를 제공한다.

 

◎ JOptionPane의 메소드

NO 메소드 다이얼로그 다이얼로그 모양
1 showMessageDialog( … ) 텍스트 메시지[확인]
2 showConfirmDialog( … ) 텍스트 메시지[확인][취소]
[예][아니오][취소]
[예][아니오]
3 showInputDialog( … ) 입력 컴포넌트 [확인] [취소]
4 showOptionDialog( … ) 텍스트 메시지
[사용자 정의 버튼]

 

◎ showXXXDialog() 메소드의 매개변수

NO 매개변수 설명 값의 종류
1 Component parentComponent 소유자 윈도우 또는 null
(소유자 윈도우의 중앙에 위치,
null을 주면 스크린 중앙에 위치)
JWindow,
JFrame,
JDialog
2 Object message 텍스트 메시지 String
3 String title 다이얼로그 제목 String
4 int optionType 버튼 집합 결정
JOptionPane의 상수 이용
OK_CANCEL_OPTION
YES_NO_OPTION
YES_NO_CANCEL_OPTION
5 int messageType 표준 아이콘 설정
JOptionPane의 상수 이용
PLAIN_MESSAGE
INFORMATION_MESSAGE
QUESTION_MESSAGE
WARNING_MESSAGE
ERROR_MESSAGE
6 Icon icon 사용자 정의 아이콘 설정 ImageIcon
7 Object[] selectionValues InputDialog에서 사용됨.
항목이 12 개 미만이면 JComboBox,
항목이 12개 이상이면 JList가 사용됨.
String[]
Icon[]
8 Object initialSelectionValue InputDialog에서 초기 선택값 String, Icon
9 Object[] options OptionDialog의 버튼들에 표시되는
텍스트 또는 이미지
String[]
Icon[]
10 Object initialValue 초기 포커스를 갖는 버튼의
텍스트 또는 이미지
String
Icon

 

   ▷ showMessageDialog() 메소드를 제외하고 나머지 세 개의 showXXXDialog() 메소드는 모두 리턴값이 있음

      ▶ 리턴값은 어떤 버튼이 클릭되었는지, 입력된 값이 무엇인지에 대한 정보를 담고 있음

 

① ConfirmDialog는 어떤 버튼이 클릭되었는가가 중요하기 때문에 showConfirmDialog() 메소드는 클릭된 버튼에 해당하는 int 타입의 JOptionPane 상수를 리턴

NO JOptionPane 상수 설명
1 JOptionPane.OK_OPTION [확인] 버튼을 눌렀을 때
2 JOptionPane.CANCEL_OPTION [취소] 버튼을 눌렀을 때
3 JOptionPane.YES_OPTION [예] 버튼을 눌렀을 때
4 JOptionPane.NO_OPTION [아니오] 버튼을 눌렀을 때
5 JOptionPane.CLOSED_OPTION 우측 상단의 [×] 버튼을 눌렀을 때

 

② InputDialog는 입력된 값이 중요하기 때문에 showInputDialog() 메소드는 입력 컴포넌 트가 JTextField이면 String을 리턴하고, JList나 JComboBox라면 선택된 Object를 리턴 한다.

 

③ OptionDialog는 어떤 버튼이 클릭되었는지가 중요하기 때문에 showOptionDialog() 메 소드는 매개값으로 주어진 options 배열에서 클릭된 버튼의 인덱스를 리턴한다.

 

◎ 표준 다이얼로그 생성 및 메소드 리턴값 이용 예제

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

public class JOptionPaneExample extends JFrame {
	private JButton btnMessage, btnConfirm;
	private JButton btnInput, btnOption;	
	
	// 메인 윈도우 설정
	public JOptionPaneExample() {
		this.setTitle("JOptionPaneExample");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.getContentPane().setLayout(new GridLayout(4,1));
		this.getContentPane().add(getBtnMessage());
		this.getContentPane().add(getBtnConfirm());
		this.getContentPane().add(getBtnInput());
		this.getContentPane().add(getBtnOption());		
		this.setSize(500, 300);
	}
	
	// MessageDialog를 보여주는 버튼 생성
	public JButton getBtnMessage() {
		if(btnMessage == null) {
			btnMessage = new JButton();
			btnMessage.setText("MessageDialog");
			btnMessage.addActionListener(new ActionListener() {	
				public void actionPerformed(ActionEvent e) {
					// MessageDialog를 보여줌
					JOptionPane.showMessageDialog(
							JOptionPaneExample.this, 
							"다이얼로그 텍스트 내용",
							"INFORMATION_MESSAGE",
							JOptionPane.INFORMATION_MESSAGE);
				}
			});
		}
		return btnMessage;
	}
	
	// ConfirmDialog를 보여주는 버튼 생성
	public JButton getBtnConfirm() {
		if(btnConfirm == null) {
			btnConfirm = new JButton();
			btnConfirm.setText("ConfirmDialog");
			btnConfirm.addActionListener(new ActionListener() {	
				public void actionPerformed(ActionEvent e) {
					// ConfirmDialog를 보여줌
					int option = JOptionPane.showConfirmDialog(
							JOptionPaneExample.this, 
							"다이얼로그 텍스트 내용",
							"OK_CANCEL_OPTION",
							JOptionPane.OK_CANCEL_OPTION,
							JOptionPane.PLAIN_MESSAGE,							
							null);
					// 클릭된 버튼 확인하기
					if(option == JOptionPane.OK_OPTION) {
						System.out.println("확인 버튼을 눌렀군요");
					} else if(option == JOptionPane.CANCEL_OPTION) {
						System.out.println("취소 버튼을 눌렀군요");						
					} else if(option == JOptionPane.CLOSED_OPTION) {
						System.out.println("닫기 버튼을 눌렀군요");						
					}
				}
			});
		}
		return btnConfirm;
	}
	
	// InputDialog를 보여주는 버튼 생성
	public JButton getBtnInput() {
		if(btnInput == null) {
			btnInput = new JButton();
			btnInput.setText("InputDialog");
			btnInput.addActionListener(new ActionListener() {	
				public void actionPerformed(ActionEvent e) {
					String input = null;
					
					// 텍스트 입력을 받는 InputDialog를 보여줌
					input = JOptionPane.showInputDialog(
						JOptionPaneExample.this, 
							"다이얼로그 텍스트 내용",
							"InputDialog",
							JOptionPane.INFORMATION_MESSAGE);
					
					// 선택된 항목을 출력
					System.out.println("입력된 텍스트: " + input);
					
					// JComboBox로 항목을 선택받는 InputDialog를 보여줌
					input = (String) JOptionPane.showInputDialog(
						JOptionPaneExample.this, 
							"다이얼로그 텍스트 내용",
							"InputDialog",
							JOptionPane.PLAIN_MESSAGE,
							null,
							new String[] {"Java", "JDBC", "JSP", "Spring"}, "JDBC");
					
					// 선택된 항목을 출력
					System.out.println("선택된 항목: " + input);
				}
			});
		}
		return btnInput;
	}
	
	
	// OptionDialog를 보여주는 버튼 생성
	public JButton getBtnOption() {
		if(btnOption == null) {
			btnOption = new JButton();
			btnOption.setText("OptionDialog");
			btnOption.addActionListener(new ActionListener() {	
				public void actionPerformed(ActionEvent e) {
					// OptionDialog를 보여줌
					int option = JOptionPane.showOptionDialog(
							JOptionPaneExample.this, 
							"다이얼로그 텍스트 내용",
							"OptionDialog",
							JOptionPane.YES_NO_OPTION,
							JOptionPane.INFORMATION_MESSAGE,							
							null,
							new String[] {"시작","종료"}, "시작");
					// 클릭된 버튼 확인하기
					if(option == 0) {
						System.out.println("시작 버튼을 눌렀군요");
					} else if(option == 1) {
						System.out.println("종료 버튼을 눌렀군요");						
					}
				}
			});
		}
		return btnOption;
	}
	
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JOptionPaneExample jFrame = new JOptionPaneExample();
				jFrame.setVisible(true);
			}
		});
	}
}

 


1. MessageDialog : 메시지 창 출력
2. ConfirmDialog : 메시지 창 출력
   ▷ OK 버튼 선택시 '확인 버튼을 눌렀군요' 출력
   ▷ Cancle 버튼 선택시 '취소 버튼을 눌렀군요' 출력
3. InputDialog : 텍스트 입력 창 출력
   ▷ 텍스트 입력시 '입력된 텍스트 : ???' 출력
   ▷ 이후 다이얼로그 텍스트 내용 선택하는 체크박스 선택
      ▶ OK 버튼 선택시 '선택된 항목 : JAVA' 출력
      ▶ Cancle 버튼 선택시 '선택된 항목 : null' 출력
4. OptionDialog : 메시지 창 출력
   ▷ 시작 버튼 선택시 '시작 버튼을 눌렀군요' 출력
   ▷ 종료 버튼 선택시 '종료 버튼을 눌렀군요' 출력

 

다이얼로그에서 JOptionPane의 메소드들은 다양한 메시지 창들을 표현할 수 있습니다.

 

다이얼로그를 잘 이용할 수 있는 방법들을 고민해봐야겠어요!

 

더 많은 기능들에 대해서 배워볼게요~!!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

728x90
반응형