Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPanel添加物质_Java_Swing_Inheritance_Jframe_Jpanel - Fatal编程技术网

Java JPanel添加物质

Java JPanel添加物质,java,swing,inheritance,jframe,jpanel,Java,Swing,Inheritance,Jframe,Jpanel,我刚刚开始向JFrame添加JPanel,需要一些帮助。在我制作的一个类中,我画了一个大矩形。这个类是JPanel的一个子类。另一个类是JFrame的子类。当我为该类创建一个新的JPanel对象时,矩形显示在框架上,但它比通常的要小得可笑,而且位置不正确。这是密码,怎么了 public void gameRender() { if( dbImage == null ) { dbImage = createImage( dbWIDTH, dbHEIGHT );

我刚刚开始向JFrame添加JPanel,需要一些帮助。在我制作的一个类中,我画了一个大矩形。这个类是JPanel的一个子类。另一个类是JFrame的子类。当我为该类创建一个新的JPanel对象时,矩形显示在框架上,但它比通常的要小得可笑,而且位置不正确。这是密码,怎么了

    public void gameRender() {

    if( dbImage == null ) {
        dbImage = createImage( dbWIDTH, dbHEIGHT );
        if( dbImage == null )
            return;
    }
    //else
        dbg = dbImage.getGraphics();


    dbg.setColor( Color.white );
    dbg.fillRect( 0, 0, dbWIDTH, dbHEIGHT );
    dbg.setColor( Color.black );
这是程序早期while循环不断调用的方法的一部分(如动画循环)。这是JPanel子类的一部分,这段代码用于双缓冲。dbWIDTH为500,dbHEIGHT为400

这段代码来自JFrame子类,该子类试图生成JPanel子类的对象(JPanel子类称为WalkAndJump3)


我试图通过重写paintComponent来完成我在JPanel子类中所做的工作,但它不起作用,我将declar WalkAndJump3 wj作为一个实例变量,所以第一行应该不会有问题。发生了什么?同样,问题是绘制的矩形太小且不合适

它很小,因为您将FlowLayout(c.setLayout(new FlowLayout())作为面板的容器(container c=getContentPane())布局。这意味着您添加到该容器中的所有组件都将“一个接一个”(事实上,这是一个流:)与其默认的最小大小对齐。在你的情况下-我想最小尺寸几乎为零

有两种选择:
1.不是最好的一次-在JPanel上使用setPreferredSize(维度)强制其扩展
2.好的一个-使用适当的布局在整个容器大小上拉伸面板,如下所示:

c.setLayout( new BorderLayout() );
这将有所帮助,但我强烈建议您在此处阅读Swing介绍,了解布局的工作原理:

要更快地获得更好的帮助,请发布一个。
c.setLayout( new BorderLayout() );