Java
[Java] JOptionPane / JDialog
NACO
2021. 8. 22. 13:56
1. JOptionPane
- 간단한 Dialog을 제공하는 클래스 (InputDialog, MessageDialog, ConfirmDialog)
- InputDialog : 사용자가 입력한 값을 받기위한 창
>> String input = JOptionPane.showInputDialog(“메시지”); - MessageDialog : 간략한 정보를 제공하기 위한 창
>> JOptionPane.showMessageDialog(부모컴포넌트, “메시지”); - ConfirmDialog : 사용자의 의중을 물어볼 수 있는 창
>> int flag = JOptionPane.showConfirmDialog(부모컴포넌트,”메시지”)
2. JDialog
- 메인 창에서 부가적인 정보를 제공하기 위한 자식 창
- swing에는 JDialog(window component/생성자 있음)를 제공, AWT에서는 Dialog(생성자x)를 제공
- JDialog를 상속 받아 사용함
>> JDialog는 부모창에서 동작을 해야하므로 has a 관계를 설정 (call by reference)
>> *modal 설정 : 자식창이 동작했을 때 부모창의 활성화 여부
: 자식창이 동작했을 때 부모창을 사용할 수 없음
*Non modal 설정 : 자식창이 동작했을 때 부모창 사용 가능
# 오늘의 코딩 #
public class UseJDialog extends JDialog implements ActionListener{
private JButton jbtnClose;
public UseJDialog(UseJOptionPane ujp) { // 다이얼로그창이 뜨려면 부모가 있어야 함
super(ujp,"자식창",true); // true 는 modal type에 관한 것! modal로 설정!
jbtnClose = new JButton("닫기");
JPanel jpCenter = new JPanel();
jpCenter.add(jbtnClose);
//배치
add("Center",jpCenter);
//컴포넌트를 이벤트에 등록
jbtnClose.addActionListener(this);
//부모창의 좌표 얻기! getX(), getY()
setBounds(ujp.getX(), ujp.getY(), 400, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}//UseDialog
@Override
public void actionPerformed(ActionEvent ae) {
dispose(); // 버튼 누르면 다이얼로그는 닫기
}//actionPerformed
}//class
- 부모창을 기반으로 JDiaog가 나오게 된다.