Java 为什么我的JPanel没有出现在我的JFrame上?

Java 为什么我的JPanel没有出现在我的JFrame上?,java,swing,Java,Swing,我已经包含了代码的相关部分以供审查。目前我运行它时看到的只是一个没有面板的灰色大框架。我之前有一个面板在工作,但当我添加另一个面板时,第一个面板会消失 import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.J

我已经包含了代码的相关部分以供审查。目前我运行它时看到的只是一个没有面板的灰色大框架。我之前有一个面板在工作,但当我添加另一个面板时,第一个面板会消失

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class StudyWindow 
{

    public StudyWindow()
    {
    //create frame to contain panels
    JFrame frame = new JFrame("Leitner");
    frame.setVisible(true);
    frame.setSize(1000, 1000);
    frame.setResizable(false);

    //add main panel to house sub-panels
    JPanel mainPanel = new JPanel();
    BorderLayout mgr = new BorderLayout();
    mainPanel.setLayout(mgr);
    mainPanel.setSize(950, 950);
    mainPanel.setBackground(Color.WHITE);
    //add top text panel that shows either front or back of card

    //not yet implemented

    //add middle text panel for user to enter response
    JPanel panel2 = new JPanel ();
    JTextField response = new JTextField(10);
    panel2.add(response);
    mainPanel.add(panel2, BorderLayout.CENTER);

    //add bottom panel with buttons and add action listeners to them
    JPanel panel3 = new JPanel ();
    JButton a = new JButton("Do not know");
    JButton b = new JButton("Flip Card");
    JButton c = new JButton("I know");
    JButton d = new JButton("Exit");
    panel3.add(a);
    panel3.add(b);
    panel3.add(c);
    panel3.add(d);
    a.addActionListener(new myActionListener());
    b.addActionListener(new myActionListener());
    c.addActionListener(new myActionListener());
    d.addActionListener(new myActionListener());
    mainPanel.add(panel3, BorderLayout.SOUTH);

    }
}

您需要将
mainPanel
添加到框架中。大概

mainPanel.add(panel3, BorderLayout.SOUTH);
frame.add(mainPanel); // <-- add this.
mainPanel.add(面板3,BorderLayout.SOUTH);

框架。添加(主面板);// 您需要将
mainPanel
添加到框架中。大概

mainPanel.add(panel3, BorderLayout.SOUTH);
frame.add(mainPanel); // <-- add this.
mainPanel.add(面板3,BorderLayout.SOUTH);
框架。添加(主面板);//

  • 从获取
    frame.setVisible(true)开始并将其移动到构造函数的末尾
  • 确保将内容添加到框架中<代码>帧。添加(主面板
  • setSize
    在面板上没有意义,因为它们将根据布局管理器的要求进行更新
  • 对于windows,首选
    pack
    而不是
    setSize
    ,但请确保在调用它之前先添加了所有组件
  • 您的面板不是白色的,因为默认情况下
    JPanel
    不是透明的(并且
    panel2
    覆盖了
    mainPanel
    的整个区域)

      • 从获取
        frame.setVisible(true)开始并将其移动到构造函数的末尾
      • 确保将内容添加到框架中<代码>帧。添加(主面板
  • setSize
    在面板上没有意义,因为它们将根据布局管理器的要求进行更新
  • 对于windows,首选
    pack
    而不是
    setSize
    ,但请确保在调用它之前先添加了所有组件
  • 您的面板不是白色的,因为默认情况下
    JPanel
    不是透明的(并且
    panel2
    覆盖了
    mainPanel
    的整个区域)

  • 从获取
    frame.setVisible(true)开始
    并将其移动到构造函数的末尾,通过获取
    frame.setVisible(true)开始并将其移动到构造函数的末尾