在Java swing中,我的主框架上没有任何内容

在Java swing中,我的主框架上没有任何内容,java,swing,Java,Swing,我正在阅读《核心Java第一卷-基础知识第九版-霍斯特曼岛和康奈尔岛加里_2013》一书,并仍在学习Java,尤其是Swing和AWT,但我对书中的一项任务有疑问。 任务是构造一个包含3个扇区的框架,其中包含用户名和密码。将文本区域居中,并使用按钮将其置于南部。主框架采用边框布局。当用户输入用户名和密码并单击“插入”按钮时,将在文本区域键入用户名和密码。以下是结果的图片: 因此,当我尝试这样做时,我得到了一个小窗口,如下所示: 我错在哪里?我不明白。 这是扩展JFrame的类 import

我正在阅读《核心Java第一卷-基础知识第九版-霍斯特曼岛和康奈尔岛加里_2013》一书,并仍在学习Java,尤其是Swing和AWT,但我对书中的一项任务有疑问。 任务是构造一个包含3个扇区的框架,其中包含用户名和密码。将文本区域居中,并使用按钮将其置于南部。主框架采用边框布局。当用户输入用户名和密码并单击“插入”按钮时,将在文本区域键入用户名和密码。以下是结果的图片:
因此,当我尝试这样做时,我得到了一个小窗口,如下所示:


我错在哪里?我不明白。 这是扩展JFrame的类

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

public class MainFrame extends JFrame {
    public MainFrame() {
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        int width = screenSize.width;
        int height = screenSize.height;
        setSize(width / 2, height / 2);
        setLayout(new BorderLayout());

        JPanel northPanel = new JPanel();
        northPanel.setLayout(new GridLayout(2,2));
        northPanel.add(new JLabel("Username: ", JLabel.RIGHT));
        JTextField textField = new JTextField();
        northPanel.add(textField);
        northPanel.add(new JLabel("Password: ", JLabel.RIGHT));
        JPasswordField passwordField = new JPasswordField();
        northPanel.add(passwordField);

        add(northPanel, BorderLayout.NORTH);


        JTextArea textArea = new JTextArea(8, 20);
        JScrollPane centerPanel = new JScrollPane(textArea);


        add(centerPanel, BorderLayout.CENTER);

        JPanel southPanel = new JPanel();
        JButton insertButton = new JButton("Insert");
        southPanel.add(insertButton);

        add(southPanel, BorderLayout.SOUTH);    
    }
}
我的MainTestMethod如下所示:

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

public class MainTestProgram {
    public static void main(String[] args) {
        JFrame mainFrame = new JFrame();
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
        mainFrame.setTitle("Krisko Beatz");
        mainFrame.setVisible(true);
        mainFrame.setLocation(500, 100);
    }
}

更改
JFrame mainFrame=newjframe()
JFrame mainFrame=new mainFrame()

你可以删除

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    int width = screenSize.width;
    int height = screenSize.height;
    setSize(width / 2, height / 2);

而是调用
pack()在构造函数的末尾,它将生成更可靠的UI大小

更改
JFrame mainFrame=new JFrame()
JFrame mainFrame=new mainFrame()

你可以删除

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    int width = screenSize.width;
    int height = screenSize.height;
    setSize(width / 2, height / 2);

而是调用
pack()
在构造函数的末尾,它将生成更可靠的UI大小

Change
JFrame mainFrame=new JFrame()
JFrame mainFrame=new mainFrame()投票关闭作为一个微不足道的印刷错误。更改
JFrame mainFrame=new JFrame()
JFrame mainFrame=new mainFrame()投票结束作为一个微不足道的印刷错误。谢谢你工作完美,然后请接受作为答案谢谢你工作完美,然后请接受作为答案