Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在我的JFrame中更改JPanel大小_Java_User Interface_Jframe_Jpanel - Fatal编程技术网

Java 在我的JFrame中更改JPanel大小

Java 在我的JFrame中更改JPanel大小,java,user-interface,jframe,jpanel,Java,User Interface,Jframe,Jpanel,我想要的是我的定时器按钮在底部,为它们留出最小的空间,我不想让它们占据画面的一半,但我不知道如何在画面内调整面板的大小。如果有人也能校对一下,我们将不胜感激 import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.sw

我想要的是我的定时器按钮在底部,为它们留出最小的空间,我不想让它们占据画面的一半,但我不知道如何在画面内调整面板的大小。如果有人也能校对一下,我们将不胜感激

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class SudokuPanel extends JFrame {

    public final int SQUARE_COUNT = 9;
    public Squares [] squares = new Squares[SQUARE_COUNT];


    public SudokuPanel(){

        super("Sudoku");
        setSize(600,600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(2,1));


        JPanel panel = new JPanel(new GridLayout(3,3));
        for(int i=0; i<SQUARE_COUNT; i++){
            squares[i] = new Squares();
            panel.add(squares[i]);
        }

        JPanel panel2 = new JPanel();
        JButton start = new JButton();
        JButton stop = new JButton();

        start = new JButton("Start Timer");
        stop = new JButton("Stop Timer");

        panel2.add(start);
        panel2.add(stop);

        add(panel);
        add(panel2);

        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        JMenu menu = new JMenu("Menu");
        menuBar.add(menu);

        JMenuItem newDifficulty = new JMenuItem("Select New Difficulty");
        menu.add(newDifficulty);

        JMenuItem reset = new JMenuItem("Reset");
        menu.add(reset);

        JMenuItem exit = new JMenuItem("Exit");
        menu.add(exit);

        class newDifficultyaction implements ActionListener{
            public void actionPerformed (ActionEvent e){
                dispose();
                Level select = new Level(); 
            }
        }

        class exitaction implements ActionListener{
            public void actionPerformed (ActionEvent e){
                System.exit(0);
            }
        }

        newDifficulty.addActionListener(new newDifficultyaction());
        exit.addActionListener(new exitaction());

        setVisible(true);
        setLocationRelativeTo(null);

    }

}
导入java.awt.GridLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JMenu;
导入javax.swing.JMenuBar;
导入javax.swing.JMenuItem;
导入javax.swing.JPanel;
公共类SudokuPanel扩展JFrame{
公共最终整数平方=9;
公共广场[]广场=新广场[广场计数];
公共SudokuPanel(){
超级(“数独”);
设置大小(600600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(新网格布局(2,1));
JPanel面板=新JPanel(新网格布局(3,3));

对于(int i=0;i我无法运行您的代码,因为您使用的是一些未包含的类。为了使按钮在面板底部占用的空间最小,我建议在框架中使用a

因此,不要使用GridLayout,而是使用:

setLayout(new BorderLayout());   
然后将带有按钮的panel2添加到框架底部:

add(panel2, BorderLayout.PAGE_END);
由于
面板
是主要组件,您希望它占据大部分空间,因此将其放置在中心位置:

add(panel, BorderLayout.CENTER);

+1,但是
JFrame
的默认布局管理器是
BorderLayout
,因此只需删除
setLayout(newgridlayout(…)
语句即可。