Java 我如何修复我的JLabel没有出现在预期的JPanel中?(代码使用JLayeredPane)

Java 我如何修复我的JLabel没有出现在预期的JPanel中?(代码使用JLayeredPane),java,swing,Java,Swing,我目前正在做一个GUI项目,如下所示。在设计UI时,我的JLabel遇到了一个问题。我一运行程序它就不会出现 public class Main extends JFrame { private JFrame mainFrame; private JPanel parentPanel; private JPanel sidePanel; private JLayeredPane layer; private JPanel info, tri, sqr, rect, circ; privat

我目前正在做一个GUI项目,如下所示。在设计UI时,我的JLabel遇到了一个问题。我一运行程序它就不会出现

public class Main extends JFrame {

private JFrame mainFrame;
private JPanel parentPanel;
private JPanel sidePanel;

private JLayeredPane layer;

private JPanel info, tri, sqr, rect, circ;
private JLabel infoTF, triLabel, sqrTF, circTF;

public static void main(String[] args) {
    Main show = new Main();
}

public Main() {
    mainFrame = new JFrame("Geometric Shapes Computation");


    layer = new JLayeredPane();
    layer.setLayout(null);
    layer.setBounds(0,0,700,600);

    Color standard = new Color (76 ,41, 211);
    Color fg = new Color (204, 204, 204);
    Font items = new Font("Century Gothic", Font.BOLD, 12);


    triLabel = new JLabel("Triangle");
    triLabel.setFont(items);
    triLabel.setBackground(standard);
    triLabel.setForeground(fg);
    triLabel.setVisible(true);

    tri = new JPanel();
    tri.add(triLabel);
    tri.setBackground(Color.ORANGE);
    tri.setLayout(null);
    tri.setBounds(0, 215, 200, 70);

    sqr = new JPanel();
    sqr.setBackground(standard);
    sqr.setLayout(null);
    sqr.setBounds(0, 315, 200, 70);

    parentPanel = new JPanel();
    parentPanel.setLayout(null);
    parentPanel.setSize(700, 600);


    sidePanel = new JPanel();
    sidePanel.setLayout(null);
    sidePanel.setBounds(0,0,200, 600);
    sidePanel.setBackground(standard);

    sidePanel.add(tri);

    layer.add(parentPanel, JLayeredPane.DEFAULT_LAYER);
    layer.add(sidePanel, JLayeredPane.PALETTE_LAYER);
    layer.add(tri, JLayeredPane.MODAL_LAYER);

    mainFrame.add(layer);
    mainFrame.setSize(700, 600);
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainFrame.setResizable(false);
    mainFrame.setVisible(true);

}
}

如果我正确理解您的问题,您只是在显示标签时遇到问题,我可以通过注释掉tri.setLayout(null)来显示标签


这可以为我显示文本。希望这会有所帮助。

为什么要使用分层窗格?为什么到处都使用空布局。Swing设计用于布局管理器。您的框架和分层窗格如何都是(600700)。JFrame有一个标题栏和边框,所以两者的大小不可能相同。标签的大小为(0,0),因此没有任何可绘制的内容。这就是为什么要使用布局管理器。布局经理会计算尺寸/位置,所以你不必这么做。我对这个话题还不太熟悉,我为我在这里犯的错误道歉。希望我能在完成这个项目后做得更好。
tri = new JPanel();
tri.add(triLabel);
tri.setBackground(Color.ORANGE);
//tri.setLayout(null);
tri.setBounds(0, 215, 200, 70);