2017-02-28 44 views
0

我制作了一个JPanel并为其分配了大小。但分配的大小不起作用。我无法弄清楚代码有什么问题?我只获取JFrame。为什么这样?请帮忙!JPanel无法获得给定的大小

// Frame.java 
    package game; 
    import java.awt.GridLayout; 
    import javax.swing.JFrame; 
    import game.graphics.Screen; 
    public class Frame extends JFrame{ 
     public Frame() 
     { 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setTitle("SNAKE"); 
      setResizable(false); 
      setVisible(true); 
     } 
     public void Init() 
     { 
      setLayout(new GridLayout(1,1,0,0));  
      Screen s = new Screen(); 
      add(s); 
      pack();  
      setLocationRelativeTo(null);   
     } 
     public static void main(String[] args) 
     { 
      new Frame(); 
     } 
    } 
    //Screen.java 
    package game.graphics; 
    import java.awt.Dimension; 
    import javax.swing.JPanel; 
    public class Screen extends JPanel { 

     public static final int WIDTH = 800, HEIGHT = 800; 
     public Screen() 
     { 
      setPreferredSize(new Dimension(WIDTH, HEIGHT)); 
     } 
    } 
+5

你需要的地方调用'的init()方法'你'Screen'添加到'Frame'。 – Izruo

+0

感谢它的工作。 – nischalinn

回答

0
import java.awt.Dimension; 
import javax.swing.JPanel; 
import java.awt.GridLayout; 
import javax.swing.JFrame; 
public class Frame extends JFrame{ 
    public Frame() 
    { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setTitle("SNAKE"); 
     setResizable(false); 
     setVisible(true); 
    } 
    public void Init() 
    { 
     setLayout(new GridLayout(1,1,0,0));  
     Screen s = new Screen(); 
     add(s); 
     pack();  
     setLocationRelativeTo(null);   
    } 
    public static void main(String[] args) 
    { 
     Frame f = new Frame(); 
     f.Init(); 
    } 




public class Screen extends JPanel { 

    public static final int WIDTH = 1000, HEIGHT = 800; 
    public Screen() 
    { 
     setPreferredSize(new Dimension(WIDTH, HEIGHT)); 
    } 
} 
    } 

//这里是解决