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