Ширина столбцов в разных строках не правильная - PullRequest
0 голосов
/ 05 апреля 2019

Сначала я хочу извиниться за мой плохой английский, но я стараюсь изо всех сил.Я хочу использовать GridBackLayout Manager.Это начинается с JFrame.Графический интерфейс должен иметь три строки.Я хочу найти пять JPanels с помощью GridBagLayout Manager.В первом ряду должна быть одна JPanel на всю ширину.Во втором ряду два JPanels.Первые 0,25 всей ширины и вторые 0,75 всей ширины.В третьем ряду тоже должно быть два JPanel, но оба по 0,5 от всей ширины.Проблема начинается в третьем ряду.Невозможно сказать, что оба должны составлять 0,5 от всей ширины.Второй ряд также неверен из-за третьего ряда.Понятия не имею, что я делаю не так.Я надеюсь, что кто-нибудь может мне помочь.

public class GridBagGUI {

   public GridBagGUI() {
     createGUI();
   }

   private void createGUI() {
      final JFrame frame= new JFrame("GridBagTest");
      frame.setPreferredSize(new Dimension(800, 600));

      final GridBagLayout gbl = new GridBagLayout();
      final GridBagConstraints gbc=new GridBagConstraints();

      final JMenuBar menuBar=new JMenuBar();
      final JMenu menu=new JMenu("test");
      final JMenuItem menuitem = new JMenuItem("test");
      menu.add(menuitem);
      menuBar.add(menu);

      gbc.insets = new Insets(5, 5, 5, 5);
      gbc.fill=GridBagConstraints.BOTH;

      final JPanel panel1 = new JPanel();
      panel1.setBorder(new LineBorder(Color.BLACK));
      gbc.gridx=0;
      gbc.gridy=0;
      gbc.gridwidth=4;
      gbc.gridheight=1;
      gbc.weightx=1.0;
      gbc.weighty=0.3;
      gbl.setConstraints(panel1, gbc);
      frame.add(panel1);


      final JPanel panel2 = new JPanel();
      panel2.setBorder(new LineBorder(Color.BLACK));
      gbc.gridx=0;
      gbc.gridy=1;
      gbc.gridwidth=1;
      gbc.gridheight=1;
      gbc.weightx=0.25;
      gbc.weighty=0.3;
      gbl.setConstraints(panel2, gbc);
      frame.add(panel2);

      final JPanel panel3 = new JPanel();
      panel3.setBorder(new LineBorder(Color.BLACK));
      gbc.gridx=1;
      gbc.gridy=1;
      gbc.gridwidth=3;
      gbc.gridheight=1;
      gbc.weightx=0.75;
      gbc.weighty=0.3;
      gbl.setConstraints(panel3, gbc);
      frame.add(panel3);


      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setJMenuBar(menuBar);
      frame.setLayout(gbl);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

}
...