我正在使用Java开发Snake游戏。电路板(采取所有措施的地方)的宽度和高度应固定(640像素* 480像素)。

结构体:

  • 从JFrame类扩展的主类
  • 从JPanel类扩展的Board类;

  • 在主类我有类似...
    setSize( 1024, 768 );
    

    ...在董事会类(class)中,我有...
    setSize( BOARDS_WIDTH, BOARDS_HEIGHT );
    

    问题是主窗口和唯一窗口似乎像1024 * 768,但其中的面板却不像640 *480。我也有setBackground(),背景填充超过640 * 480。

    有什么方法可以使木板的宽度和高度达到640 * 480,但是主窗口的宽度和高度-与木板的宽度和高度一样多吗?

    现在看起来像这样...

    编辑:

    所有作品...差不多。

    主类:
    add( new Board(), BorderLayout.CENTER );
    pack();
    setResizable( false );
    setLocationRelativeTo( null );
    setVisible( true );
    setDefaultCloseOperation( EXIT_ON_CLOSE );
    setTitle( "Snake (by daGrevis)" );
    

    董事会类:
    setPreferredSize( new Dimension( 640, 480 ) );
    

    灰色背景为642 * 482!就像会有一个边界将所有像素包裹起来!

    最佳答案

    请,某物出现了xxx * x,那根本不是真的,请检查

    JButton Size - java.awt.Dimension[width=400,height=40]
    JPanel Size - java.awt.Dimension[width=640,height=480]
    JFrame Size - java.awt.Dimension[width=646,height=505]
    

    代码(Trail: Creating a GUI With JFC/Swing的基本内容,但我仍然感到满意,这已经过时了)

    编辑:忘记setDefaultCloseOperation()
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class FrameSize {
    
        private JFrame frm = new JFrame();
        private JPanel pnl = new JPanel();
        private JButton btn = new JButton("Get ScreenSize for JComponents");
    
        public FrameSize() {
            btn.setPreferredSize(new Dimension(400, 40));
            btn.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    System.out.println("JButton Size - " + btn.getSize());
                    System.out.println("JPanel Size - " + pnl.getSize());
                    System.out.println("JFrame Size - " + frm.getSize());
                }
            });
            pnl.setPreferredSize(new Dimension(640, 480));
            pnl.add(btn, BorderLayout.SOUTH);
            frm.add(pnl, BorderLayout.CENTER);
            frm.setLocation(150, 100);
            frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // EDIT
            frm.setResizable(false);
            frm.pack();
            frm.setVisible(true);
        }
    
        public static void main(String[] args) {
            java.awt.EventQueue.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    FrameSize fS = new FrameSize();
                }
            });
        }
    }
    

    关于java - 如何设置JPanel的宽度和高度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5921175/

    10-09 01:07