Java Swing组件部分不显示,只有一个基本的窗口

今天写了一个UDPserver的swing,一切都是按照教程来的,但是打开后只有一个最基本的窗口可以改变大小,但是里面的组件右面部分不显示,这是为什么呢?

img

package udp_server;

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

public class style {
    
    
    //创建一个页面
    JFrame whole_page = new JFrame ("UDP Server");
    
    //创建接收文本框和输出文本框
    JTextArea recv_send = new JTextArea(8,20);
    JTextArea portarea = new JTextArea(1,8);
    JTextArea iparea = new JTextArea(1,8);
    
    //创建一堆按钮
    JButton getip = new JButton("获取");
    JButton yes_port = new JButton("确定");
    JButton create_udp_server = new JButton("创建UDP Server");
    
    //创建一块桌面充当画布
    //private MyCanvas drawArea = new MyCanvas();
    
    //定义一个JList对象
    JList<String> historydata;
    //定义一个DefaultListModel对象
    DefaultListModel<String> historyModel = new DefaultListModel<>();
    
    //定义一个右键菜单,用于设置程序的外观风格
    JPopupMenu stylemenu = new JPopupMenu();

    //定义一个ButtongGroup对象,用于组合风格按钮,形成单选
    ButtonGroup styleGroup = new ButtonGroup();

    //定义五个单选按钮菜单项,用于设置程序风格
    JRadioButtonMenuItem metalItem = new JRadioButtonMenuItem("Metal 风格",true);
    JRadioButtonMenuItem nimbusItem = new JRadioButtonMenuItem("Nimbus 风格",true);
    JRadioButtonMenuItem windowsItem = new JRadioButtonMenuItem("Windows 风格",true);
    JRadioButtonMenuItem classicItem = new JRadioButtonMenuItem("Windows 经典风格",true);
    JRadioButtonMenuItem motifItem = new JRadioButtonMenuItem("Motif 风格",true);
    
    public void init(){
            
        
        //------------------------组合主区域------------------------
        //创建两个装载文本框和按钮的JPanel,创建两个箱子并放在左边
        JPanel portArea = new JPanel();
        portArea.add(portarea);
        portArea.add(yes_port);
        
        JPanel ipArea = new JPanel();
        ipArea.add(iparea);
        ipArea.add(getip);
        
        Box putInArea = Box.createVerticalBox();
        putInArea.add(ipArea);
        putInArea.add(portArea);
        
        whole_page.add(putInArea, BorderLayout.WEST);
        //whole_page.add(portArea, BorderLayout.WEST);
        //whole_page.add(ipArea, BorderLayout.WEST);

        //把“创建udp按钮”放进左边盒子
        Box creatUDP = Box.createVerticalBox();
        creatUDP.add(create_udp_server);
        putInArea.add(creatUDP);
        
        //创建一个盒子放在右面
        Box SeenArea = Box.createVerticalBox();
        
        //定义历史数据列表
        historydata = new JList<>(historyModel);
        historydata.setVisibleRowCount(8);
        
        //在右边盒子中添加组件
        SeenArea.add(historydata);
        //SeenArea.add(MyCanvas);
        
        whole_page.add(SeenArea, BorderLayout.EAST);
        
        
        //------------------------组合右键菜单-----------------------------

        styleGroup.add(metalItem);
        styleGroup.add(nimbusItem);
        styleGroup.add(windowsItem);
        styleGroup.add(classicItem);
        styleGroup.add(motifItem);

        //给5个风格菜单创建事件监听器
        ActionListener flavorLister = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String command = e.getActionCommand();
                try {
                    changeFlavor(command);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        };

        //为5个风格菜单项注册监听器
        metalItem.addActionListener(flavorLister);
        nimbusItem.addActionListener(flavorLister);
        windowsItem.addActionListener(flavorLister);
        classicItem.addActionListener(flavorLister);
        motifItem.addActionListener(flavorLister);

        stylemenu.add(metalItem);
        stylemenu.add(nimbusItem);
        stylemenu.add(windowsItem);
        stylemenu.add(classicItem);
        stylemenu.add(motifItem);

        //调用 whole_page组件的setComponentPopupMenu
        putInArea.setComponentPopupMenu(stylemenu);

        // 设置关闭窗口时推出程序
        whole_page.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //设置jFrame最佳大小并可见
        whole_page.pack();
        whole_page.setVisible(true);
        whole_page.setLayout(new BorderLayout());


    }

    //定义一个方法,用于改变界面风格
    private void changeFlavor(String command) throws Exception{
        switch (command){
            case "Metal 风格":
                UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                break;
            case "Nimbus 风格":
                UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
                break;
            case "Windows 风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                break;
            case "Windows 经典风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
                break;
            case "Motif 风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
                break;
        }

        //更新whole_page窗口内顶级容器以及所有组件的UI
        SwingUtilities.updateComponentTreeUI(whole_page.getContentPane());
        //更新右键菜单及内部所有菜单项的UI
        SwingUtilities.updateComponentTreeUI(stylemenu);
    }


    public static void main(String[] args) {
        new style().init();
    }

}