Java JPanel添加物质
我刚刚开始向JFrame添加JPanel,需要一些帮助。在我制作的一个类中,我画了一个大矩形。这个类是JPanel的一个子类。另一个类是JFrame的子类。当我为该类创建一个新的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 );
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() );