Gridbaglayout 布局问题(java swing)

Gridbaglayout problem with layout (java swing)

大家好,因为我是 java 编程 id 的初学者,想在这里问一些有经验的编码员。所以我正在尝试制作库存系统,但我的布局有问题 Image Link "Annual balance" 面板必须位于 "Record of sales" 面板下方,然后 "Record of sales" 面板必须填充space 以上水平。任何人都知道问题出在哪里。

public MainViewForm(String text)
{



       setTitle("Computer Warehouse ni SeQuoia");  
       setLayout(new GridBagLayout());
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       setSize(1200,900);        
       setResizable(true);
       setVisible(true);



       mBar = new JMenuBar();
        setJMenuBar(mBar);

       mFile = new JMenu("FILE");
    mBar.add(mFile);

    mEdit = new JMenu("EDIT");
    mBar.add(mEdit);

    mView = new JMenu("VIEW");
    mBar.add(mView);

    mSave = new JMenu("SAVE");
    mBar.add(mSave);

    tBSave = new JToggleButton("SAVE");
    mSave.add(tBSave);

    mHelp = new JMenu("HELP");
    mBar.add(mHelp);

     mOption = new JMenu("OPTION");
     mBar.add(mOption);

     mEnd = new JMenu("END");
     mBar.add(mEnd);

     tbExit = new JToggleButton("EXIT");
     mEnd.add(tbExit);


   dlyForm = new DailyForm();
   mtlyForm = new MonthlyForm();
   tForm = new TableForm();
   abForm = new AnnualBalanceForm();

   GridBagConstraints gbc_dlyForm = new GridBagConstraints();
   gbc_dlyForm.anchor=GridBagConstraints.FIRST_LINE_START;
   gbc_dlyForm.weightx=1;
   gbc_dlyForm.weighty=1;
   gbc_dlyForm.gridx=0;
   gbc_dlyForm.gridy=0;
   add(dlyForm,gbc_dlyForm );

   GridBagConstraints gbc_mtlyForm = new GridBagConstraints();
   gbc_mtlyForm.weightx=1;
   gbc_mtlyForm.weighty=1;
   gbc_mtlyForm.gridx=0;
   gbc_mtlyForm.gridy=0;
   gbc_mtlyForm.insets=new Insets(225,0,0,0);
   gbc_mtlyForm.anchor=GridBagConstraints.LINE_START;
   add(mtlyForm,gbc_mtlyForm);

   GridBagConstraints gbc_tForm = new GridBagConstraints();
   gbc_tForm.fill=GridBagConstraints.HORIZONTAL;
   gbc_tForm.weightx=0.1;
   gbc_tForm.weighty=0.1;
   gbc_tForm.anchor= GridBagConstraints.CENTER;
   add(tForm,gbc_tForm);

   GridBagConstraints gbc_abForm = new GridBagConstraints();
   gbc_abForm.anchor= GridBagConstraints.PAGE_END;
   gbc_abForm.weightx=1;
   gbc_abForm.weighty=1;

   add(abForm,gbc_abForm);

   pack();
}

您没有为这些限制指定 gridx/gridy。它们默认为 RELATIVE,因此下一个组件在水平和垂直方向上移动。

(如果关于您的代码,我最想更改的是命名。我不关心类型(在名称中),所以请删除它并且不要缩写其余有用的单词。另外值得注意的是 GridBagConstraints 数据被复制,因此您可以在适当的地方重复使用它们。)