java - 为什么我的 JPanel 没有显示在我的 JFrame 上?

标签 java swing

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

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);

    }
}

最佳答案

  • 首先将 frame.setVisible(true); 移至构造函数的末尾
  • 确保将内容添加到框架中; frame.add(mainPanel)
  • setSize 在面板上毫无意义,因为它们将根据布局管理器的需求进行更新
  • 对于 Windows,优先使用 pack 而不是 setSize,但请确保在调用它之前已先添加了所有组件。
  • 您的面板不是白色的,因为 JPanel 默认情况下不透明(并且 panel2 覆盖了 mainPanel 的整个区域)

关于java - 为什么我的 JPanel 没有显示在我的 JFrame 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761876/

相关文章:

java - 关于Java定位

java - 自定义日期格式 mm :ss

java - 何时使用 SVNDepth INFINITY 何时使用 UNKNOWN?

java - 我有两个几乎相同的方法,如何重构它们?

java - 如何在 java 中将数据库中的信息显示到 jtable 中?

java - JOptionPane.showOptionDialog 不显示按钮?

java - 将文本从另一个类添加到 JTextPane

java - 你能解释一下 portlet 中 jsession id 的用途吗

java - JUnit 消息是否应该说明成功或失败的条件?

JavaGame 角色在绘图时移动不准确?