如何设置JPanel的宽度和高度?

daGrevis:

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

结构体:

  • JFrame扩展的类,
  • JPanel扩展的Board类;

班我有类似...

setSize( 1024, 768 );

...在董事会课程中,我有...

setSize( BOARDS_WIDTH, BOARDS_HEIGHT );

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

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

现在看起来像这样...

宽度和高度为〜1000 *〜750,而不是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!就像会有一个边界将所有像素包裹起来!

mKorbel:

请,某物出现了x x x * 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的基本内容:使用JFC / Swing创建GUI,但我仍然满意那已经过时了)

编辑:忘记 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();
            }
        });
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章