日期:2014-05-20  浏览次数:20642 次

关于获取panel大小的问题

import java.awt.Color;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class TxzRun {
   
public static void main(String[] args) {

JFrame jframe = new JFrame("窗体");
jframe.setBounds(8, 8, 21 * 48, 14 * 48 + 33);
jframe.setVisible(true);

JPanel panel = new JPanel();
panel.setBackground(Color.red);//设置panel的背景色为红色
panel.setLayout(null);

jframe.setContentPane(panel);
System.out.println(panel.getHeight()+" "+panel.getWidth());


}
}

显示窗体的时候panel变成了红色,但打印的结果为什么是 0 0呢?  



------解决方案--------------------
囧~~~原因是UI生成需要时间,没记错的话JAVA默认是用线程处理UI的,也就是说jframe.setContentPane(panel);这句只给线程安排了绘图任务,没执行完就直接进下句打印了,对象还没来得及更新的
------解决方案--------------------
探讨

引用:
囧~~~原因是UI生成需要时间,没记错的话JAVA默认是用线程处理UI的,也就是说jframe.setContentPane(panel);这句只给线程安排了绘图任务,没执行完就直接进下句打印了,对象还没来得及更新的


有道理。。。。
那有没有什么方法能获取到呢?? 我写了个方法,方法的参数是JPanel类型,方法体里需要得到panel的大……