我应该将组件添加到JFrame或它的contentPane吗?

Tomas Aschan:

当我在第一门Java课程中学习创建Java GUI:s时,就被教导要创建我的窗口作为JFrame实例,然后JPanel在每个窗口中添加一个JFrame,最后将所有GUI组件添加到中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用于包装其他组件正义。但是,除此以外,这两种方法之间的真正区别是什么?他们中的任何一个相对于另一个有什么好处吗?

安德鲁·汤普森(Andrew Thompson):

我更喜欢创建一个JPanel(作为Swing容器,可以有一个边框)并将其设置为内容窗格。

JComponent离开内容窗格,需要铸造,它的气味比创建额外的组件还要糟糕。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果没有它,我应该将RecyclerView依赖项添加到gradle吗?

我应该将 .swiftpm 添加到 gitignore 吗?

我应该将Pod添加到VCS吗?

如何将多个组件添加到JFrame?

如何将多个组件添加到JFrame

我应该如何将TextChangedListener添加到EditText组件?

我应该将sass源映射添加到我的git repo吗?

我应该将Python的pyc文件添加到.dockerignore吗?

将Postgres垃圾箱添加到PATH:我应该“导出”吗?

我应该将go dep vendor /添加到.gitignore吗?

我应该将Django admin静态文件添加到git repo吗?

我应该将.idea / workspace.xml添加到gitignore吗?

我应该将密钥库文件添加到版本控制中吗?

我应该将.idea / jarRepositories.xml添加到gitignore吗?

我应该将 __init__.py 添加到 git 存储库吗?

Symfony:我应该将rabbitmq:consumer命令添加到crontab吗?

Firebase:我应该将GoogleService-Info.plist添加到.gitignore吗?

我应该将已删除的文件添加到舞台区域吗?

我是否将 MouseListeners 添加到 Canvas 或 JFrame

我可以手动将 dispatch 添加到组件的 props 而不是 connect() 吗?

我可以将“操作”添加到 winrt 组件中的运行时类吗

我知道您可以将HTML添加到RSS 2.0,但是您应该添加整个页面吗?

我应该将google-services.json(来自Firebase)添加到我的存储库中吗?

我应该将Visual Studio 2015 .vs文件夹添加到源代码管理吗?

无法将 JLabel 或 JButton 添加到 JFrame。框架不会显示它

将多个jPanels添加到jFrame

无法将JButton添加到JFrame

将多个面板添加到JFrame

将JApplet添加到JFrame