JFrame / JPanel的维度不正确

时间:2017-12-08 02:12:35

标签: java graphics jframe jpanel

所以,现在每当Game类运行(包含一个MainPanel对象)时,我只得到一个足够大的小盒子以适应“最小化”,“恢复”和“关闭“按钮,而不是1280x720屏幕。我的所有其他JFrame/JPanel组合除了这个之外都有效,我似乎无法弄清楚原因。这很可能只是一个小错误,但我在这个问题上已经被困了很长时间。谢谢!

 public class Game extends JFrame{ 
    public static MainPanel mp = new MainPanel();
    public static void main( String[] args){
        Game g1 = new Game();
        g1.play();
    }

    public Game(){
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setTitle( "Game" );
        setResizable( false );
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        setPreferredSize(new Dimension(1280, 720));
        setLocation(dim.width/2-getSize().width/2, dim.height/2-getSize().height/2);
        setUndecorated(false);

        mp.setBackground( Color.BLACK );
        mp.setPreferredSize( new Dimension(1280, 720) );
        mp.setLocation(dim.width/2-getSize().width/2, dim.height/2-getSize().height/2);
        mp.setLayout( null );
        mp.repaint();

        getContentPane().add( mp );
    }

    private void play(){
        EventQueue.invokeLater(new Runnable() {
                public void run() {
                    setVisible(true);
                }
            });
    }

}

public class MainPanel extends JPanel{
    private JPanel jp = new JPanel();
    public MainPanel(){
        jp.setBackground( Color.BLACK );
        jp.setPreferredSize( new Dimension(1280,720) );
        jp.setLayout( null );
    }

    private void play(){
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                setVisible(true);
            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

而不是使用:

setPreferredSize(Dimension dimension);

使用:

setSize(int width, int height);

setPreferredSize(维度维度);不能在JFrame中工作,只适用于JPanel等组件。

我希望有所帮助!!