Java guijpanel&;框架布局

Java guijpanel&;框架布局,java,swing,user-interface,jpanel,layout-manager,Java,Swing,User Interface,Jpanel,Layout Manager,我想问一些关于JavaGUI的问题,特别是关于JPanel语法的问题。我真的很困惑如何准确地配置面板,尝试使用BorderLayout和GridLayout,但它仍然不符合我的要求 我想制作如下表格: 当前结果: 从图中,我需要配置这2个点 输入面板和按钮面板之间的填充/边距 tablePanel和inputPanel之间的填充/边距 代码 导入java.awt.BorderLayout; 导入java.awt.Color; 导入java.awt.GridLayout; 导入java.uti

我想问一些关于JavaGUI的问题,特别是关于
JPanel
语法的问题。我真的很困惑如何准确地配置面板,尝试使用
BorderLayout
GridLayout
,但它仍然不符合我的要求

我想制作如下表格:

当前结果:

从图中,我需要配置这2个点

  • 输入面板和按钮面板之间的填充/边距
  • tablePanel和inputPanel之间的填充/边距
  • 代码
    导入java.awt.BorderLayout;
    导入java.awt.Color;
    导入java.awt.GridLayout;
    导入java.util.Vector;
    导入javax.swing.JButton;
    导入javax.swing.JComboBox;
    导入javax.swing.JFrame;
    导入javax.swing.JLabel;
    导入javax.swing.JPanel;
    导入javax.swing.JScrollPane;
    导入javax.swing.JTable;
    导入javax.swing.JTextField;
    导入javax.swing.border.BevelBorder;
    导入javax.swing.border.EmptyBorder;
    导入javax.swing.border.LineBorder;
    导入javax.swing.table.DefaultTableModel;
    公共类manageForm扩展了JFrame{
    //向量头=新向量();
    //Vectordata=新向量();
    DefaultTableModel DefaultTableModel;
    JTable表;
    JScrollPane滚动窗格;
    JLabel titleLabel=新的JLabel(“管理手机”);
    JTable hpTable=新的JTable();
    JLabel idLabel=新的JLabel(“ID”);
    JLabel namelab=新JLabel(“名称”);
    JLabel pricelab=新JLabel(“价格”);
    JLabel weightLabel=新的JLabel(“重量”);
    JLabel cableLabel=新的JLabel(“电缆长度”);
    JLabel typeLabel=新的JLabel(“类型”);
    JTextField idtxt=新的JTextField();
    JTextField name txt=新的JTextField();
    JTextField pricetxt=新的JTextField();
    JTextField weighttxt=新的JTextField();
    JTextField cabletxt=新的JTextField();
    JComboBox typeBox=新的JComboBox();
    JButton insertBtn=新JButton(“插入”);
    JButton updateBtn=新JButton(“更新”);
    JButton deleteBtn=新JButton(“删除”);
    JButton confirmtn=新JButton(“确认”);
    JButton cancelBtn=新JButton(“取消”);
    字符串头[]={“ID”、“名称”、“类型”、“价格”、“重量”、“电缆长度”};
    字符串数据[][]={
    {“2”、“Bose Quit”、“入耳”、“价格”、“重量”、“电缆长度”},
    {“2”、“Bose Quit”、“入耳”、“价格”、“重量”、“电缆长度”},
    {“2”、“Bose安静”、“入耳”、“价格”、“重量”、“电缆长度”}
    };
    公共表格(){
    JPanel headerPanel=新的JPanel();
    JPanel tablePanel=新的JPanel();
    tablePanel.setboorder(新的清空顺序(0,0,0));
    JPanel inputPanel=新的JPanel(新的网格布局(6,2));
    输入面板.设置顺序(新的清空顺序(20,10,20,10));
    //inputPanel.setOrder(新行边框(颜色.黑色));
    JPanel buttonPanel=新JPanel(新网格布局(1,5));
    按钮面板订单(新的清空订单(100,20100,20));
    JPanel footerPanel=新的JPanel(新的GridLayout(2,1,0,0));
    标题面板添加(标题标签);
    inputPanel.add(idLabel);
    inputPanel.add(idtxt);
    inputPanel.add(名称标签);
    inputPanel.add(nametxt);
    inputPanel.add(价格标签);
    inputPanel.add(pricetxt);
    inputPanel.add(权重标签);
    inputPanel.add(weighttxt);
    inputPanel.add(电缆标签);
    inputPanel.add(cabletxt);
    inputPanel.add(类型标签);
    inputPanel.add(打印框);
    按钮面板添加(确认);
    按钮面板添加(取消BTN);
    按钮面板添加(插入BTN);
    按钮面板添加(updateBtn);
    按钮面板添加(删除BTN);
    footerPanel.add(inputPanel);
    footerPanel.add(按钮面板);
    /*
    JPanel panel0=新的JPanel();
    JPanel panel1=新的JPanel();
    JPanel panel2=新的JPanel();
    JPanel panel3=新的JPanel();
    JPanel panel4=新的JPanel();
    JPanel panel5=新的JPanel();
    JPanel panel6=新的JPanel();
    JPanel panel7=新的JPanel();
    JPanel panel8=新的JPanel();
    面板1.设置布局(新网格布局(1,6));
    面板2.设置布局(新网格布局(1,2));
    第2组:添加(idLabel);
    panel2.add(idtxt);
    面板3.设置布局(新网格布局(1,2));
    面板3.添加(名称标签);
    panel3.add(nametxt);
    面板4.设置布局(新网格布局(1,2));
    面板4.添加(价格标签);
    面板4.添加(价格文本);
    面板5.设置布局(新网格布局(1,2));
    面板5.添加(重量标签);
    面板5.添加(权重文本);
    面板6.设置布局(新网格布局(1,2));
    面板6.添加(电缆标签);
    面板6.添加(cabletxt);
    面板7.设置布局(新网格布局(1,2));
    面板7.添加(打印标签);
    面板7.添加(打印框);
    面板8.设置布局(新网格布局(1,5));
    主面板。添加(面板0);
    主面板。添加(面板1);
    主面板。添加(面板2);
    主面板。添加(面板3);
    主面板。添加(面板4);
    主面板。添加(面板5);
    主面板。添加(面板6);
    主面板。添加(面板7);
    主面板。添加(面板8);
    */  
    /*
    标题。添加(“ID”);
    标题。添加(“名称”);
    标题。添加(“类型”);
    标题。添加(“价格”);
    标题。添加(“重量”);
    标题。添加(“电缆长度”);
    */
    defaultTableModel=新的defaultTableModel(数据,标题);
    hpTable=新的JTable(defaultTableModel);
    scrollPane=新的JScrollPane(hpTable);
    //tablePanel.add(滚动窗格);
    setLayout(新边界布局(0,5));
    setTitle(“管理表格”);
    设置大小(800600);
    setDefaultCloseOperation(关闭时退出);
    setLocationRelativeTo(空);
    setVisible(真);
    添加(headerPanel,BorderLayout.NORTH);
    添加(滚动窗格,BorderLayout.CENTER);
    添加(页脚面板,BorderLayout.SOUTH);
    包装();
    }
    公共静态void main(字符串[]args){
    新的manageForm();
    }
    }
    
    如何准确管理面板布局以满足我们的要求

    我试过了
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.GridLayout;
    import java.util.Vector;
    
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.border.BevelBorder;
    import javax.swing.border.EmptyBorder;
    import javax.swing.border.LineBorder;
    import javax.swing.table.DefaultTableModel;
    
    
    public class manageForm extends JFrame {
        //Vector<String> header=new Vector<String>();
        //Vector<Vector<String>>data=new Vector<Vector<String>>();
    
        DefaultTableModel defaultTableModel;
        JTable table;
        JScrollPane scrollPane;
    
        JLabel titleLabel=new JLabel("Manage Handphone");
    
        JTable hpTable = new JTable();
    
        JLabel idLabel = new JLabel("ID");
        JLabel nameLabel = new JLabel("Name");
        JLabel priceLabel = new JLabel("Price");
        JLabel weightLabel = new JLabel("Weight");
        JLabel cableLabel = new JLabel("Cable Length");
        JLabel typeLabel = new JLabel("Type");
    
        JTextField idtxt = new JTextField();
        JTextField nametxt = new JTextField();
        JTextField pricetxt = new JTextField();
        JTextField weighttxt = new JTextField();
        JTextField cabletxt = new JTextField();
    
        JComboBox typeBox = new JComboBox();
    
        JButton insertBtn = new JButton("INSERT");
        JButton updateBtn = new JButton("UPDATE");
        JButton deleteBtn = new JButton("DELETE");
        JButton confirmBtn = new JButton("CONFIRM");
        JButton cancelBtn = new JButton("CANCEL");
    
        String header[] = {"ID","Name","Type","Price","Weight","Cable Length"};
        String data[][] = {
                {"2","Bose Quite","In-Ear","Price","Weight","Cable Length"},
                {"2","Bose Quite","In-Ear","Price","Weight","Cable Length"},
                {"2","Bose Quite","In-Ear","Price","Weight","Cable Length"}
    
        };
    
    
        public manageForm() {
    
            JPanel headerPanel = new JPanel();
            JPanel tablePanel = new JPanel();
            tablePanel.setBorder(new EmptyBorder(0,0,0,0));
            JPanel inputPanel = new JPanel(new GridLayout(6,2));
            inputPanel.setBorder(new EmptyBorder(20,10,20,10));
            //inputPanel.setBorder(new LineBorder(Color.black));
            JPanel buttonPanel = new JPanel(new GridLayout(1,5));
            buttonPanel.setBorder(new EmptyBorder(100,20,100,20));
            JPanel footerPanel = new JPanel(new GridLayout (2,1,0,0));
    
    
            headerPanel.add(titleLabel);
    
            inputPanel.add(idLabel);
            inputPanel.add(idtxt);
            inputPanel.add(nameLabel);
            inputPanel.add(nametxt);
            inputPanel.add(priceLabel);
            inputPanel.add(pricetxt);
            inputPanel.add(weightLabel);
            inputPanel.add(weighttxt);
            inputPanel.add(cableLabel);
            inputPanel.add(cabletxt);
            inputPanel.add(typeLabel);
            inputPanel.add(typeBox);
    
            buttonPanel.add(confirmBtn);
            buttonPanel.add(cancelBtn);
            buttonPanel.add(insertBtn);
            buttonPanel.add(updateBtn);
            buttonPanel.add(deleteBtn);
    
    
            footerPanel.add(inputPanel);
            footerPanel.add(buttonPanel);
    
    /*
            JPanel panel0=new JPanel();
            JPanel panel1=new JPanel();
            JPanel panel2=new JPanel();
            JPanel panel3=new JPanel();
            JPanel panel4=new JPanel();
            JPanel panel5=new JPanel();
            JPanel panel6 = new JPanel();
            JPanel panel7 = new JPanel();
            JPanel panel8 = new JPanel();
    
    
    
            panel1.setLayout(new GridLayout(1, 6));
    
    
    
            panel2.setLayout(new GridLayout(1, 2));
            panel2.add(idLabel);
            panel2.add(idtxt);
    
            panel3.setLayout(new GridLayout(1, 2));
            panel3.add(nameLabel);
            panel3.add(nametxt);
    
            panel4.setLayout(new GridLayout(1, 2));
            panel4.add(priceLabel);
            panel4.add(pricetxt);
    
            panel5.setLayout(new GridLayout(1, 2));
            panel5.add(weightLabel);
            panel5.add(weighttxt);
    
            panel6.setLayout(new GridLayout(1, 2));
            panel6.add(cableLabel);
            panel6.add(cabletxt);
    
            panel7.setLayout(new GridLayout(1, 2));
            panel7.add(typeLabel);
            panel7.add(typeBox);
    
            panel8.setLayout(new GridLayout(1, 5));
    
    
            mainPanel.add(panel0);
            mainPanel.add(panel1);
            mainPanel.add(panel2);
            mainPanel.add(panel3);
            mainPanel.add(panel4);
            mainPanel.add(panel5);
            mainPanel.add(panel6);
            mainPanel.add(panel7);
            mainPanel.add(panel8);
        */  
    
            /*
            header.add("ID");
            header.add("Name");
            header.add("Type");
            header.add("Price");
            header.add("Weight");
            header.add("Cable Length");
            */
    
            defaultTableModel=new DefaultTableModel(data, header);
            hpTable =new JTable(defaultTableModel);
            scrollPane=new JScrollPane(hpTable);
    //      tablePanel.add(scrollPane);
    
    
            setLayout(new BorderLayout(0,5));
            setTitle("Manage Form");
            setSize(800,600);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setLocationRelativeTo(null);
            setVisible(true);
            add(headerPanel,BorderLayout.NORTH);
            add(scrollPane,BorderLayout.CENTER);
            add(footerPanel,BorderLayout.SOUTH);
            pack();
        }
    
    
        public static void main(String[] args) {
        new manageForm();   
        }
    
    }