2016-06-22 14 views
0

Я работаю на настольном приложении Java, которая использует несколько Jpanel сек, как cards в CardLayout, проблема заключается в том, что при переключении между картами JmenuBar исчезает полностью или просто части it.I имеет mainFrame, который держит все JPanels и JMenuBar, другие JPanels имеют некоторые тексты и JButton с и JLabel сек Вот как я реализация этого: Это кадр, который держит все mainFrame.javaJMenuBar не отображается при переключении карты в CardLayout

public class mainFrame extends JFrame { 

    JPanel cards ; 

    menubar menu= new menubar(); 

    mainPanel card1 = new mainPanel(); 

    Ajout card2= new Ajout(); 

    //ViewAjoutEnf card3= new ViewAjoutEnf(); 


    public mainFrame(){ 

     setResizable(true); 
     setExtendedState(JFrame.MAXIMIZED_BOTH); 
     this.add(menu); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     cards = new JPanel(new CardLayout()); 

     cards.add(card1, "Card 1"); 
     cards.add(card2, "Card 2"); 
//  cards.add(card3, "Card 3"); 

     getContentPane().add(cards); 

    } 

Это класс JMenuBar menubar.Java:

общественного класса MenuBar расширяет JMenuBar {

JMenu menuouvrir = new JMenu("ملف"); 

JMenuItem ajoutbase = new JMenuItem("فتح"); 

JMenuItem quiter = new JMenuItem("خروج "); 

JMenuItem motpass = new JMenuItem("تبديل كلمة السر"); 

JMenu menuajout = new JMenu("ادخال "); 

JMenuItem ajoutprodui = new JMenuItem("ادخال منتوج"); 

JMenuItem listproduit = new JMenuItem("لائحة المنتوجات"); 

JMenu menusortie = new JMenu("اخراج"); 

JMenuItem sortiproduit = new JMenuItem("اخراج منتوج"); 

JMenu retour = new JMenu("عودة "); 


JMenu menuapropos = new JMenu("?"); 



public menubar(){ 
    this.setBounds(0, 0, 1370, 30); 
    this.add(Box.createHorizontalGlue()); 
    this.setFont(new Font("sans-serif", Font.PLAIN, 12)); 


    menuouvrir.add(ajoutbase); 
    menuouvrir.add(motpass); 
    menuouvrir.addSeparator(); 
    menuouvrir.add(quiter); 


    menuajout.add(ajoutprodui); 
    menuajout.add(listproduit); 

    menusortie.add(sortiproduit); 

    this.add(menuapropos); 
    this.add(retour); 
    this.add(menusortie); 
    this.add(menuajout); 
    this.add(menuouvrir); 

    this.setVisible(true); 
} 

и эти два JPanels я есть: mainPanel.Java

общественный класс mainPanel расширяет JPanel {

JButton but = new JButton("dsdffd"); 

    public mainPanel(){ 

      this.setLayout(null); 
      this.add(but); 
      but.setBounds(70,500,70,70); 
      this.setBackground(Color.white); 
      this.setVisible(true); 

    }  

}

и Ajou.Java:

public class Ajout extends JPanel{ 
    JButton but = new JButton("dsdffd"); 

    public Ajout(){ 


     this.setLayout(null); 

     this.add(but); 
     but.setBounds(70,500,70,70); 
     this.setBackground(Color.white); 
     this.setVisible(true); 

} 

} 

ответ

4

Не выдвигайте JMenuBar. Для этого нет оснований. Вы создаете экземпляр JMenuBar и добавляете экземпляры JMenu в строку меню.

Не используйте нулевой макет. JMenuBar имеет собственный менеджер компоновки.

Я не вижу, где вы добавляете панель меню в рамку, используя метод setJMenBar(...).

Прочтите раздел из руководства Swing о том, как использовать меню для получения дополнительной информации и рабочих примеров. Примеры также покажут вам, как лучше структурировать ваш код.

Кроме того, не оставляйте выдвижные панели только для добавления на панель одного компонента. Вы можете добавить несколько компонентов на любую панель. И убедитесь, что ваши панели используют диспетчер компоновки.

 Смежные вопросы

  • Нет связанных вопросов^_^