Следует ли мне добавлять компоненты в JFrame или в его contentPane?

Когда я научился создавать Java GUI в моем первом курсе Java, меня учили создавать свои окна как экземпляры JFrame , а затем добавлять JPanel к каждому JFrame и, наконец, добавить все компоненты графического интерфейса в JPanel :

class Example extends JFrame {
    Example() {
        JPanel panel = new JPanel();
        this.add(panel);

        // Create components here and add them to panel
        // Perhaps also change the layoutmanager of panel

        this.pack();
        this.setVisibility(true);
    }

    public static void main(String[] args) {
        new Example();
    }
}

Я всегда думал: «ну, это немного пахнет; мне не нравится создавать дополнительный объект, чтобы просто быть контейнер ", но я не знал другого способа сделать это, поэтому просто продолжил. До недавнего времени, когда я наткнулся на этот «шаблон»:

class AnotherExample extends JFrame {
    AnotherExample() {
        Container pane = this.getContentPane();

        // Add components to and change layout of pane instead

        this.pack();
        this.setVisibility(true);
    }

    public static void main(String[] args) {
        new AnotherExample();
    }
}

Еще будучи новичком в Java, мне нравится второй подход только потому, что он не предполагает создания JPanel только для того, чтобы обернуть другой компоненты. Но каковы реальные отличия подходов, кроме этого? Есть ли у одного из них какие-то большие преимущества перед другим?

6
задан Tomas Aschan 8 January 2012 в 02:32
поделиться