gpt4 book ai didi

java - JPanel添加事项

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:28 26 4
gpt4 key购买 nike

我不熟悉将 JPanel 添加到 JFrame,需要一些帮助。在我制作的一个类中,我画了一个大矩形。此类是 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 子类(JPanel 子类称为 WalkAndJump3)的对象的 JFrame 子类。

    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. 好的 - 使用适当的布局在整个容器大小上拉伸(stretch)面板,如下所示:

c.setLayout( new BorderLayout() );

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

关于java - JPanel添加事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com