Сначала я хочу извиниться за мой плохой английский, но я стараюсь изо всех сил.Я хочу использовать 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);
}
}