高手请进!急急急急!再现等待!
import java.awt.*;
import javax.swing.*;
public class Swing5_1 extends JFrame{
// AbstractButton a=new AbstractButton();
Container c=getContentPane();
JComboBox jcb=new JComboBox();
// JList l=new JList( "asdas ");
public Swing5_1(){
super( "this is a Swing ");
c.setLayout(new FlowLayout());
// c.add(jcb);
// c.add(l);
}
public static void main(String args[]){
JComboBox jcb1=new JComboBox();
Swing5_1 s=new Swing5_1();
s.setSize(400,500);
s.setVisible(true);
s.getContentPane().setLayout(new FlowLayout());
s.getContentPane().add(jcb1);
}
}
请问s.getContentPane()与Container c=getContentPane();有什么关系?此程序中是定义了2个容器么?
------解决方案--------------------Container c=getContentPane()
取得的是这个类的容器,也就是这个Swing5_1的容器
s.getContentPane()
取得的是Swing5_1这个类的容器
所以应该是一样的,只是s.getContentPane()是对c的引用,
因为c默认是私有变量,你无法直接使用,所以用get方法间接得到c的引用
恳求楼下的指正、补充~
------解决方案-------------------- 给大家介绍个技术群
大家一起学习,一起提高
30440614
------解决方案--------------------mark
------解决方案--------------------p10305119() ( ) 信誉:100 Blog 加为好友 2007-4-20 15:31:14 得分: 0
我感觉您说的有点问题,
如果将Container c=getContentPane()放在主函数里确实通不过,
但是如果不定义Container c=getContentPane()
只有s.getContentPane()也是对的阿?
=============================================
不定义Container c=getContentPane() 并不会影响到 s.getContentPane()的调用。
在类里面定义Container c=getContentPane()只是方便你进行界面布局控制。
而不用老是用 getContentPane()来调用
如果将Container c=getContentPane()放在主函数里,是不正确的
因为 getContentPane()是JFrame类的实例方法,而主函数是静态的!
如果要调用就要用一个JFrame类型的实例来调用,就像s.getContentPane()这样