Java 为什么它不显示我的按钮?

Java 为什么它不显示我的按钮?,java,swing,user-interface,button,Java,Swing,User Interface,Button,我正在尝试使用分层窗格为我正在使用的程序创建菜单,但按钮无法显示。我似乎不知道这是什么 public class FlashcardGUI { public static void main(String[] args) { JFrame projectFrame = new JFrame("StudyFast Flashcard"); projectFrame.setName("StudyFast Flashcards"); projectFrame.setSize

我正在尝试使用分层窗格为我正在使用的程序创建菜单,但按钮无法显示。我似乎不知道这是什么

public class FlashcardGUI {

public static void main(String[] args) 
{
    JFrame projectFrame = new JFrame("StudyFast Flashcard");
    projectFrame.setName("StudyFast Flashcards");
    projectFrame.setSize(1000,600);
    projectFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    projectFrame.setVisible(true);


    JLayeredPane projectLayeredPane = new JLayeredPane();
    projectFrame.setContentPane(projectLayeredPane);

    JPanel projectMenu1 = new JPanel();
    projectLayeredPane.setLayer(projectMenu1, 0);

    final JButton startNow = new JButton();
    startNow.setText("Exit");
    startNow.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent e) 
                {
                    System.exit(0);
                }
        });



    projectFrame.add(projectLayeredPane);
    projectLayeredPane.add(projectMenu1);
    projectMenu1.add(startNow);
    }
}

将这两行放在主方法的末尾。为了使按钮显示,顺序很重要

projectFrame.pack();
projectFrame.setVisible(true);

(确保删除第9行中已有的
projectFrame.setVisible(true);

将这两行放在主方法的末尾。为了使按钮显示,顺序很重要

projectFrame.pack();
projectFrame.setVisible(true);

(请确保删除第9行中已有的
projectFrame.setVisible(true);

我已更新了您的代码,它现在正在工作。请在代码中查看该问题的内联注释。希望这有帮助

public class FlashcardGUI2 {

public static void main(String[] args) {
    JFrame projectFrame = new JFrame("StudyFast Flashcard");
    projectFrame.setName("StudyFast Flashcards");
    projectFrame.setSize(1000,600);
    projectFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    projectFrame.setVisible(true);
    JLayeredPane projectLayeredPane = new JLayeredPane();
    LayoutManager layout = new FlowLayout();   //creating a FlowLayout object
    projectLayeredPane.setLayout(layout);   //adding the layout to JLayeredPane
                                            //because JLayeredPane do not have default layout of
                                            //its own. The reason you were not 
                                            //getting the button displayed
    projectLayeredPane.setPreferredSize(new Dimension(300, 310));
    JPanel projectMenu1 = new JPanel();
    final JButton startNow = new JButton();
    startNow.setText("Exit");
    startNow.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
        });
    projectLayeredPane.add(projectMenu1,new Integer(50));
    projectLayeredPane.add(startNow,new Integer(10));
    projectFrame.add(projectLayeredPane);
    projectFrame.pack();
    }
}

我已经更新了你的代码,它正在工作。请在代码中查看该问题的内联注释。希望这有帮助

public class FlashcardGUI2 {

public static void main(String[] args) {
    JFrame projectFrame = new JFrame("StudyFast Flashcard");
    projectFrame.setName("StudyFast Flashcards");
    projectFrame.setSize(1000,600);
    projectFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    projectFrame.setVisible(true);
    JLayeredPane projectLayeredPane = new JLayeredPane();
    LayoutManager layout = new FlowLayout();   //creating a FlowLayout object
    projectLayeredPane.setLayout(layout);   //adding the layout to JLayeredPane
                                            //because JLayeredPane do not have default layout of
                                            //its own. The reason you were not 
                                            //getting the button displayed
    projectLayeredPane.setPreferredSize(new Dimension(300, 310));
    JPanel projectMenu1 = new JPanel();
    final JButton startNow = new JButton();
    startNow.setText("Exit");
    startNow.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
        });
    projectLayeredPane.add(projectMenu1,new Integer(50));
    projectLayeredPane.add(startNow,new Integer(10));
    projectFrame.add(projectLayeredPane);
    projectFrame.pack();
    }
}

理想情况下,应该使FlashcardGUI扩展JFrame@cricket_007就我个人而言,我不会,我最多会从一个
JPanel
扩展它,它提供了更多的灵活性、可扩展性和对组件运行方式的控制displayed@MadProgrammer这一切都取决于主要功能,即suppose@cricket_007我反对这个观点,基于在Swing/UI领域16年以上的专业开发经验,该框架承载了更多的功能、更多的责任,并将您锁定在一个单一的用例中——IMHOYou应该理想地扩展FlashcardGUIJFrame@cricket_007就个人而言,我不会,我最多会从一个
JPanel
扩展它,它提供了更多的灵活性,可扩展性和对组件运行方式的控制displayed@MadProgrammer这一切都取决于主要功能,即suppose@cricket_007我反对这种说法,基于Swing/UI 16年多的专业发展,框架承载了更多的功能、额外的责任,并将您锁定在一个单一的用例中——IMHO