갓토리

Java, Swing] getOwner 이용 부모프레임 조정 본문

IT/프로그래밍

Java, Swing] getOwner 이용 부모프레임 조정

ZungTa 2015. 6. 27. 03:45

질문

-------------------

제가 자바로 프로그램을 만드는데요...

 

대충 어떤 프로그램인지 설명드릴께요

 

처음 컴파일 하면 입력이란 버튼이 하나있는 awt 창이 뜹니다

 

그리고 그 입력버튼을 클릭하면 새로운 아이디와 패스워드를 입력하는 다이어로그 창이 뜹니다

 

그래서 아이디랑 패스워드를 입력 해서 확인을 누르면 다이어로그 창이 사라지며

 

처음 awt(입력버튼이 있는창) 에 아이디와 비밀번호가 가운데 나타나게 하는 프로그램입니다

 

여기서 아이디와 비밀번호를 치고 확인을 눌럿을때 그 정보를 어떻게 첫 awt 창으로 옮기는 지 몰라요 ㅠㅠㅠ

 

미치겟습니다 ㅠㅠㅠㅠㅠ 살려주세요 ㅠㅠ




답변

---------------

Swing으로 작성했습니다,
AWT로 바꿔도 똑같이 동작 할겁니다.

이런 식의 코드를 원하셨는지는 잘 모르겠네요..



코드

-----------------

  1. import java.awt.*; 
  2. import java.awt.event.*; 
  3. import javax.swing.*; 
  4. public class Login extends JFrame implements ActionListener { 
  5.    public JLabel L_id, L_password; 
  6.    private JButton BT_input; 
  7.    public Login() { 
  8.           setLayout(new BorderLayout()); 
  9.           setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  10.           // 아이디/패스워드 
  11.           L_id = new JLabel(" "); 
  12.           L_password = new JLabel(" "); 
  13.           JPanel P_input = new JPanel(new GridLayout(2, 1)); 
  14.           P_input.setBorder(BorderFactory.createEmptyBorder(10, 20, 10, 20)); 
  15.           P_input.add(L_id); 
  16.           P_input.add(L_password); 
  17.           add(P_input, BorderLayout.CENTER); 
  18.           // 입력 
  19.           BT_input = new JButton("입력"); 
  20.           BT_input.addActionListener(this); 
  21.           add(BT_input, BorderLayout.SOUTH); 
  22.           pack(); 
  23.           setLocationRelativeTo(getParent()); 
  24.    @Override 
  25.    public void actionPerformed(ActionEvent e) { 
  26.           // TODO Auto-generated method stub 
  27.           new Input(this).setVisible(true); 
  28.    /** 
  29.     * @param args 
  30.     */ 
  31.    public static void main(String[] args) { 
  32.           // TODO Auto-generated method stub 
  33.           new Login().setVisible(true); 
  34. class Input extends JDialog implements ActionListener { 
  35.    private JTextField TF_id, TF_password; 
  36.    private JButton BT_ok; 
  37.    public Input(JFrame owner) { 
  38.           super(owner); 
  39.           setModal(true); 
  40.           setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 
  41.           setLayout(new GridLayout(3, 1)); 
  42.           // 아이디 
  43.           TF_id = new JTextField(20); 
  44.           JPanel P_id = new JPanel(new BorderLayout()); 
  45.           P_id.setBorder(BorderFactory.createEmptyBorder(10, 20, 5, 20)); 
  46.           P_id.add(new JLabel("아이디 : "), BorderLayout.WEST); 
  47.           P_id.add(TF_id, BorderLayout.CENTER); 
  48.           add(P_id); 
  49.           // 패스워드 
  50.           TF_password = new JTextField(20); 
  51.           JPanel P_password = new JPanel(new BorderLayout()); 
  52.           P_password.setBorder(BorderFactory.createEmptyBorder(5, 20, 10, 20)); 
  53.           P_password.add(new JLabel("비밀번호 : "), BorderLayout.WEST); 
  54.           P_password.add(TF_password, BorderLayout.CENTER); 
  55.           add(P_password); 
  56.           // 버튼 
  57.           BT_ok = new JButton("확인"); 
  58.           BT_ok.addActionListener(this); 
  59.           add(BT_ok); 
  60.           pack(); 
  61.           setLocationRelativeTo(getOwner()); 
  62.    @Override 
  63.    public void actionPerformed(ActionEvent e) { 
  64.           // TODO Auto-generated method stub 
  65.           if (getOwner() instanceof Login) 
  66.               if (e.getSource() == BT_ok) { 
  67.                      Login login = (Login) getOwner(); 
  68.                      // Login의 텍스트 변경 
  69.                      login.L_id.setText(TF_id.getText()); 
  70.                      login.L_password.setText(TF_password.getText()); 
  71.                      // 창 닫기 
  72.                      dispose(); 
  73.               } 





Comments