在 Cardlayout 中切换卡片时不显示 JMenuBar
JMenuBar doesn't show when switching Cards in a Cardlayout
我正在开发一个 Java 桌面应用程序,它使用多个 Jpanel
作为 CardLayout
中的 cards
,问题是当我在卡片 JmenuBar
完全消失或 it.I 的一部分有一个 mainFrame
包含所有 Jpanels 和 JmenuBar,其他 Jpanels 有一些文本和 JButton
s 和 JLabel
s 以下是我的实现方式:
这是容纳所有东西的框架 mainFrame.java
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 class menubar.Java:
public class 菜单栏扩展了 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);
}
这些是我拥有的两个 Jpanel:
mainPanel.Java
public class 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);
}
}
不要扩展 JMenuBar。没有理由这样做。您创建 JMenuBar 的实例并将 JMenu 实例添加到菜单栏。
不要使用空布局。 JMenuBar 有自己的布局管理器。
我看不到您使用 setJMenBar(...)
方法将菜单栏添加到框架的位置。
阅读 Swing 教程中有关如何使用菜单的部分,了解更多信息和工作示例。这些示例还将向您展示如何更好地构建代码。
此外,不要为了向面板添加单个组件而继续扩展面板。您可以将多个组件添加到任何面板。并确保您的面板使用布局管理器。
我正在开发一个 Java 桌面应用程序,它使用多个 Jpanel
作为 CardLayout
中的 cards
,问题是当我在卡片 JmenuBar
完全消失或 it.I 的一部分有一个 mainFrame
包含所有 Jpanels 和 JmenuBar,其他 Jpanels 有一些文本和 JButton
s 和 JLabel
s 以下是我的实现方式:
这是容纳所有东西的框架 mainFrame.java
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 class menubar.Java:
public class 菜单栏扩展了 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);
}
这些是我拥有的两个 Jpanel: mainPanel.Java
public class 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);
}
}
不要扩展 JMenuBar。没有理由这样做。您创建 JMenuBar 的实例并将 JMenu 实例添加到菜单栏。
不要使用空布局。 JMenuBar 有自己的布局管理器。
我看不到您使用 setJMenBar(...)
方法将菜单栏添加到框架的位置。
阅读 Swing 教程中有关如何使用菜单的部分,了解更多信息和工作示例。这些示例还将向您展示如何更好地构建代码。
此外,不要为了向面板添加单个组件而继续扩展面板。您可以将多个组件添加到任何面板。并确保您的面板使用布局管理器。