Почему setLayout () может быть вызван без указания класса или объекта в Java? - PullRequest
0 голосов
/ 12 июля 2011

Это начало класса MidiSynth из Java Sound Demo .У меня сложилось впечатление, что методы в Java всегда вызывались из объекта или класса.Откуда происходит метод 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);
    }

Ответы [ 3 ]

3 голосов
/ 12 июля 2011

MidiSynth extends JPanel

Таким образом, вызов setLayout фактически вызывает this.setLayout

0 голосов
/ 12 июля 2011

На самом деле, потому что ваш класс MidiSynth наследует JPanel, это означает, что вы можете иметь дело со всеми методами JPanel, как вы имеете дело с локальными методами MidiSynth класса.

0 голосов
/ 12 июля 2011

Кроме того, setLayout() определено в java.awt.Container

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...