Кнопки в JPanel не маштабируются под размер JFrame - Java

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, в теории вроде как кнопочки должны заполнить весь экран, но не заполняют, и можно как то обойтись без setSize в классе panel_button
package Meny;
 
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;

public class Class_Meny
{
    public Class_Meny()
    {
        JFrame window = new JFrame("Welcom");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(640, 480);
        window.add(new panel_button());
        window.setVisible(true);
    }

    public class panel_button extends JPanel
    {
        public panel_button()
        {
            JPanel meny_button = new JPanel();
            meny_button.setLayout(new GridLayout(3, 3));
            
            JButton button1 = new JButton("1");
            JButton button2 = new JButton("2");
            JButton button3 = new JButton("3");
            JButton button4 = new JButton("4");
            JButton button5 = new JButton("5");
            JButton button6 = new JButton("6");
            JButton button7 = new JButton("7");
            JButton button8 = new JButton("8");
            JButton button9 = new JButton("9");
            
            meny_button.add(button1);
            meny_button.add(button2);
            meny_button.add(button3);
            meny_button.add(button4);
            meny_button.add(button5);
            meny_button.add(button6);
            meny_button.add(button7);
            meny_button.add(button8);
            meny_button.add(button9);
 
            setSize(640, 480);
            add(meny_button);
        }
    }

    public static void main(String[] args)
    {
        new Class_Meny();
    }
}

Решение задачи: «Кнопки в JPanel не маштабируются под размер JFrame»

textual
Листинг программы
package Meny;
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
 
 
 
public class Class_Meny
{
    public String button_name[] = {"1","2","3","4","5","6","7","8","9"};
    
    
    public Class_Meny()
    {
        JFrame window = new JFrame("Welcom");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.add(new panel_button(), BorderLayout.SOUTH);
        window.setSize(640, 480);
        window.setVisible(true);
    }
    
    
    public class panel_button extends JPanel
    {
        public JPanel meny_panel = new JPanel();
        
        public panel_button()
        {
            
            meny_panel.setPreferredSize(new Dimension(420, 260));
            meny_panel.setLayout(new GridLayout(3, 3, 10, 10));
            
            for (int i = 0; i < button_name.length; i++)
            {
                JButton button = new JButton(button_name[i]);
                button.setFocusable(false);
                meny_panel.add(button);
                
                ActionListener actionListener = new ButtonPushActionListener();
                button.addActionListener(actionListener);
            }
            
            add(meny_panel);
        }
        
        
        private class ButtonPushActionListener implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
                System.out.println("SOURCE " + this.toString());
            }
        }
    }
    
    
    public static void main(String[] args)
    {
        new Class_Meny();
    }
}

Оцени полезность:

6   голосов , оценка 3.667 из 5