ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-JPanel添加问题

2019-12-01 14:01:07  阅读:333  来源: 互联网

标签:inheritance swing jpanel jframe java


我是向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.

这段代码来自试图创建JPanel子类的对象的JFrame子类(JPanel子类称为WalkAndJump3).

    wj = new WalkAndJump3();

    Container c = getContentPane();
    c.setLayout( new FlowLayout() );

    c.add( wj );

我试图通过重写paintComponent来完成我在JPanel子类中所做的事情,但是它没有用,并且我确实将WalkAndJump3 wj声明为实例变量,因此第一行应该不是问题.怎么了?同样,问题在于绘制的矩形太小且不合适.

解决方法:

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

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

c.setLayout( new BorderLayout() );

这会有所帮助,但我强烈建议您阅读Swing入门,了解布局的工作原理:
http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html

标签:inheritance,swing,jpanel,jframe,java
来源: https://codeday.me/bug/20191201/2081247.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有