懂JAVA的进来看一下这段代码

来源:百度知道 编辑:UC知道 时间:2024/06/30 01:53:37
主要是考察swing这一块的知识
class CalculatorFrame extends JFrame{
public CalculatorFrame(){
setTitle("Calculator");
CalculatorPanel panel=new CalculatorPanel();
add(panel); //第一个add
pack();
}
}

class CalculatorPanel extends Panel{
public CalculatorPanel(){
setLayout(new BorderLayout());
result=0;
lastCommand="=";
start=true;
flag=true;

display=new JButton("0");
display.setEnabled(false);
add(display,BorderLayout.NORTH); //第二个add

ActionListener insert=new InsertAction();
ActionListener command=new CommandAction();

panel=new JPanel();
panel.setLayout(new GridLayout(4,5));
我想问一下,我标出来的两个add函数,到底谁add了谁,前面应该是有个对象名的呀,好像省略了,帮忙解释一下。(这是源程序中的一段,源程序其他部分没有另外定义add函数)
请说详细点,为什么可以省略前面的类?

应该是在Frame中add了一个Panel,在Panel中add 了一个Button.

第一个add在CalculatorFrame的构造函数中调用,而CalculatorFrame继承了JFrame类,所以相当于super.add(panel);

第二个类似,相当于调用了继承的Panel的函数super.add();