2014-04-17 2 views
0

관리자 버튼을 누르면 JPanel 내에서 UserAdminPanel에서 AdminLogin으로 전송하려고합니다.현재 JPanel을 다른 JPanel로 바꾸는 방법은 무엇입니까?

UserAdmin 패널

enter image description here

교통

enter image description here

내가 지금 가지고있는 문제 패널 AdminLogin 것은 내가 열어 새로운 패널 대신에 현재 패널을 변경 오전입니다 새로운 패널.

이것은이

public class AdminLoginPanel extends JPanel 
{ 
    AdminLoginPanel() 
    {   
     JLabel pwlabel = new JLabel("Password"); 
     JPasswordField pwfield = new JPasswordField(20); 
     JButton loginbutton = new JButton("Login"); 

     add(pwlabel); 
     add(pwfield); 
     add(loginbutton); 
    } 
} 

내가 다음 example에보고 한 AdminLogin 패널의 코드와이 exampleUserAdminPanel

public class SelectAdminUserPanel extends JPanel 
{ 
    public SelectAdminUserPanel() 
    { 
     setLayout(new GridLayout(3,1)); 
     JButton b1 = new JButton("User Login"); 
     JButton b2 = new JButton("Admin Login"); 
     JButton b3 = new JButton("Exit"); 

     b1.addActionListener(new SelectUserButtonListener()); 
     b2.addActionListener(new SelectAdminButtonListener()); 
     b3.addActionListener(new SelectExitButtonListener()); 

     add(b1); 
     add(b2); 
     add(b3); 
    } 

    private class SelectAdminButtonListener implements ActionListener 
    { 

     public void actionPerformed(ActionEvent event) 
     { 
      AdminModule am = new AdminModule(); 

       am.run(); 
     } 
    } 

    private class SelectUserButtonListener implements ActionListener 
    { 
     public void actionPerformed(ActionEvent event) 
     { 
       GameModule gm = new GameModule(); 
       gm.run(); 
     } 
    } 

    private class SelectExitButtonListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent event) 
     { 

     } 
    } 
} 

내 코드이지만 때문에 매우 적용되지이다 현재 JPanel을 다시 작성하는 대신 CardLayout에 대해 이야기합니다.

+0

패널을 삭제할 상위 컨테이너의 메소드를 제거하고 추가 할 수만 있습니까? – Hirak

+0

전체 레이아웃을 다시 실행하는 대신 동일한 창에서 한 패널을 다른 패널로 대체하는 문제가 정확히 무엇입니까? – Ordous

+0

@Ordous 멋질 것입니다. 어떻게해야합니까? – Computernerd

답변

0

메인 프레임에 대한 참조가 있어야하며 누른 버튼을 기반으로 구성 요소를 제거하고 필요한 구성 요소 만 추가해야한다고 생각합니다. 당신이 말하는 바에 따르면 UserAdminPanel이 메인 패널입니다. 제 생각에는 참조를 얻을 수있는 프레임에 추가 된 것 같습니다. 단추를 클릭하면 표시된 모든 내용을 제거하고 클릭 한 단추 만 표시해야합니다. 나는 다음과 비슷한 모습이 될 것입니다 생각 : 방법 getNewPanel()가 기본이 JPanel을 반환

private class SelectAdminButtonListener implements ActionListener { 

     public void actionPerformed(ActionEvent event) { 
      frame.getContentPane().removeAll(); 
      AdminModule am = new AdminModule(); 
      frame.add(am.getNewPanel()); 
      frame.pack();      
      // am.run(); //it's not clear what does for you 
     } 

} 

. 나는 AdminModuleAdminLoginPanel에 대한 참조가 있다고 가정합니다.

관련 문제