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
在面板上没有意义,因为它们将根据布局管理器的要求进行更新pack
而不是setSize
,但请确保在调用它之前先添加了所有组件JPanel
不是透明的(并且panel2
覆盖了mainPanel
的整个区域)从获取
frame.setVisible(true)开始
并将其移动到构造函数的末尾,通过获取frame.setVisible(true)开始代码>并将其移动到构造函数的末尾