2013-06-13 14 views
0

제 문제는 "로그인"메뉴를 선택하면이 코드가 가운데에 새로운 버튼을 만드는 것입니다. 메뉴를 선택하면 "aaa"가 인쇄되지만 단추는 추가되지 않습니다. 어떻게 해결할 수 있습니까? 고맙습니다. 당신이 볼 GUI에 구성 요소를 추가 할 때JPanel이 MenuSelected에 추가되지 않았습니다.

public class NewJApplet extends JApplet { 
static JPanel panel; 
static Container content; 
static JMenuBar menubar; 

/** 
* Initialization method that will be called after the applet is loaded into 
* the browser. 
*/ 
public void init() { 
    //panel = new JPanel(); 
    //BorderLayout borderlayout = new BorderLayout(); 
    //panel.setLayout(borderlayout); 
    panel = new JPanel(); 
    BorderLayout borderlayout = new BorderLayout(); 
    panel.setLayout(borderlayout); 


    menubar = new JMenuBar(); 
    JMenu login = new JMenu("Login"); 
    menubar.add(login); 
    login.addMenuListener(new MenuListener(){ 
     public void menuSelected(MenuEvent e) { 
      System.out.println("aaa"); 
      //menubar.setVisible(false); 
      panel.add(new JButton("add"), BorderLayout.CENTER);    
     } 
     public void menuCanceled(MenuEvent e) { 

     } 
     public void menuDeselected(MenuEvent e) { 

     } 
    }); 



    JMenu arizabildirimformu = new JMenu("Arıza Bildirim Formu"); 
    menubar.add(arizabildirimformu); 

    setJMenuBar(menubar); 


    //panel.add(new JButton("add"), BorderLayout.CENTER); 
    //panel.add(menubar, BorderLayout.NORTH); 
    // TODO start asynchronous download of heavy resources 
    content = getContentPane(); 
    content.setLayout(new GridBagLayout()); 
    content.add(panel); 

} 

}

+0

단추를 추가 한 후 애플릿에서 revalidate를 호출 해보십시오. 재 페인트를 호출해야 할 수도 있습니다. – MadProgrammer

+0

한 공간에있는 많은 구성 요소의 경우 ['CardLayout'] (http://docs.oracle.com/javase/7/docs/api/java/)을 사용하십시오. awt/CardLayout.html) [짧은 예제] (http://stackoverflow.com/a/5786005/418556)에서 볼 수 있습니다. –

답변

1

코드가 있어야한다 :

panel.add(...); 
panel.revalidate(); 
panel.repaint(); // sometimes needed 

난 당신이 또한 How to Use Menus 보는 것이 좋습니다. 당신은 정말로 JMenuItems와 ActionListeners를 사용해야합니다.

관련 문제