繁体   English   中英

为什么可以在 Java 中不指定 class 或 object 的情况下调用 setLayout()?

[英]Why can setLayout() be called without specifying a class or object in Java?

这是来自Java 声音演示的 MidiSynth class 的开始。 我的印象是 Java 中的方法总是从 object 或 class 调用。 setLayout() 方法从何而来?

public class MidiSynth extends JPanel implements ControlContext {
    // Fields omitted

    public MidiSynth() {
        setLayout(new BorderLayout());

        JPanel p = new JPanel();
        p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
        EmptyBorder eb = new EmptyBorder(5,5,5,5);
        BevelBorder bb = new BevelBorder(BevelBorder.LOWERED);
        CompoundBorder cb = new CompoundBorder(eb,bb);
        p.setBorder(new CompoundBorder(cb,eb));
        JPanel pp = new JPanel(new BorderLayout());
        pp.setBorder(new EmptyBorder(10,20,10,5));
        pp.add(piano = new Piano());
        p.add(pp);
        p.add(controls = new Controls());
        p.add(new InstrumentsTable());

        add(p);
    }

MidiSynth extends JPanel

所以setLayout调用实际上是在调用this.setLayout

此外, setLayout()定义在java.awt.Container

实际上,因为您的 class MidiSynth继承了JPanel ,这意味着您可以像处理MidiSynth class 的本地方法一样处理 JPanel 的所有方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM