有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么在框架构造之后没有读取我的代码?

就在我创建了一个新的Frame对象来连接未来的JPanel之后,对对象“j”的引用就无法识别

package engine;

import javax.swing.*;

public class GamePanel extends JFrame{

    final int HEIGHT=700, WIDTH=500;

    JFrame j= new JFrame("LittleRPG");
    j.setSize(HEIGHT, WIDTH);
}

j.setSize();不接受,并出现错误(这适用于初始构造对象引用后的所有对象引用)。我需要帮助确定原因;新鲜的眼睛总是有帮助的-谢谢!


共 (3) 个答案

  1. # 1 楼答案

    您不需要创建单独的JFrame对象来设置大小,因为您已经从JFrame扩展了GamePanel类。因此,您可以直接在constructor GamePanel中设置它,代码如下所示:

    package engine;
    
    import javax.swing.*;
    
    public class GamePanel extends JFrame
    {
    
        final int HEIGHT=700, WIDTH=500;
    
        GamePanel ()
        {
          setSize(HEIGHT, WIDTH);
        }
    
    } 
    
  2. # 2 楼答案

    @Tupfer和@Vikas的答案是正确的。 仍然需要使用Jframe的对象来完成

    package engine;
    
    import javax.swing.*;
    import java.awt.Color;
    
    public class GamePanel extends JPanel{
    
       final int HEIGHT=700, WIDTH=500;
    
       public static void main(String[] args){
           JFrame j= new JFrame("LittleRPG");
           j.setSize(HEIGHT, WIDTH);
           j.getContentPane().add(new GamePanel());
           j.setVisible(true);
           j.setLocationRelativeTo(null);
           j.setBackground(Color.BLUE);
           j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       }
    }
    

    此外,您不需要扩展JFrame

  3. # 3 楼答案

    你的setSize(HEIGHT, WIDTH);方法必须在构造函数或其他方法中。就像@Vikas Suryawanshi说的,你可以调用JFrame的方法,你不需要创建一个新的对象