Java Jframe中的JPanel未显示

Java Jframe中的JPanel未显示,java,swing,layout,jframe,jpanel,Java,Swing,Layout,Jframe,Jpanel,我正在为一个计算器做一个简单的布局,实际上我是java新手,正在学习基础知识。我的问题是,当我运行这段代码时,只有一个JFrame打开,它的按钮上的其他面板没有显示。请帮帮我,我哪里出了问题 import java.awt.*; import javax.swing.*; public class Layouts extends JFrame{ public Layouts(){ super("Calculator");

我正在为一个计算器做一个简单的布局,实际上我是java新手,正在学习基础知识。我的问题是,当我运行这段代码时,只有一个JFrame打开,它的按钮上的其他面板没有显示。请帮帮我,我哪里出了问题

    import java.awt.*;
    import javax.swing.*;

    public class Layouts extends JFrame{
        public Layouts(){
            super("Calculator");
            setLookAndFeel();
            setSize(350,350);

            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            BorderLayout border = new BorderLayout();
            setLayout(border);

            GridLayout numbers = new GridLayout(2,2);
            row2.setLayout(numbers);
            row2.add(one);
            row2.add(two);
            row2.add(three);
            row2.add(four);

            GridLayout operators = new GridLayout(2,2);
            row3.setLayout(operators);
            row3.add(plus);
            row3.add(subtract);
            row3.add(multiply);
            row3.add(equals);
            setVisible(true);
        }

        private void setLookAndFeel()
        {
            try
            {
            IManager.setLookAndFeel("com.sun.java.lang.plaf.nimbus.NimbusLookAndFeel");
            }
            catch(Exception exc)
            {
            }
        }

        //row 1
        JPanel row1 = new JPanel();
        JTextField text = new JTextField(20);

        //row 2
        JPanel row2 = new JPanel();
        JButton one = new JButton("1");
        JButton two = new JButton("2");
        JButton three = new JButton("3");
        JButton four = new JButton("4");

        //row3
        JPanel row3 = new JPanel();
        JButton plus = new JButton("+");
        JButton subtract = new JButton("-");
        JButton multiply = new JButton("*");
        JButton equals = new JButton("=");

        public static void main(String[] args)
        {
        Layouts l1 = new Layouts();
        }

   }

但是您没有向
边框添加任何内容!添加
编号
运算符

记住添加所有组件(即第2行、第3行等)

例如:

add(row2,BorderLayout.CENTER)
add(row3,BorderLayout.SOUTH)

您需要将
JPanel
s和
JButton
s添加到
JFrame
。本例中的
JFrame
是您的
Layouts
类。所以你可以这样做:

row1.add(text);
this.add(row1); 

row2.add(one);
row2.add(two);
row2.add(three);
row2.add(four);
this.add(row2); 

...

检查此教程是否非常有用

我看不出您将第2行和第3行添加到jframe的位置。这就是问题所在@dicheridoo:)如果可能,请避免扩展顶级容器。从长远来看,扩展JPanel并在其上创建UI要容易得多。这使得它更加灵活和可重用,因为您可以将面板添加到您喜欢的任何容器中
row1.add(text);
this.add(row1); 

row2.add(one);
row2.add(two);
row2.add(three);
row2.add(four);
this.add(row2); 

...