当前位置:  开发笔记 > 编程语言 > 正文

你使用哪种布局管理器?

如何解决《你使用哪种布局管理器?》经验,为你挑选了8个好方法。

每个人都使用什么java GUI布局管理器?最近,我一直在使用MigLayout,它有一些强大的组件控件.只是想看看除了标准JDK之外的其他开发人员使用的是什么.



1> Rui Vieira..:

MiGLayout是Java开发人员广泛使用的GUI布局管理器.


这个答案有点快.我们期待理由,利弊......

2> Jay R...:

GridBagLayout可用.一旦你习惯了它,它就会很好用.我认为标准的JDK布局管理器本身就非常强大.此外,您可以最大限度地减少对第三方库的依赖.



3> Kevin Day..:

MiG和FormLayout(JGoodies)都非常适合手动布局(并且几乎所有布局最终都变为手动).我最大的建议是设计您的视图,以便您可以完全删除布局并重新实现它而不会影响您的应用程序(视图和控制器的良好分离是关键).

绝对看看JGoodie的PresentationModel方法来实现'哑'视图.我将这种技术与GUI构建器(我使用GroupLayout和Jigloo GUI构建器插件)一起用于抛弃快速原型.经过3或4次迭代后,通常会出现窗口,我们使用MiG或FormLayout重新实现.

编辑:自从我写这篇文章以来,我已经开始将MiG用于我的所有布局,而且我不再使用GUI构建器 - 使用MiG进行布局非常容易.



4> 小智..:

我工作的最后一个Swing应用程序使用了JGoodies的FormsLayout.



5> jjnguy..:

我使用GridBagLayout.它似乎需要很多代码,但它使得布局非常好看.

我还想将BorderLayout与GridBagLayout面板结合起来,以实现出色的可定制性.



6> adum..:

我非常喜欢使用TableLayout而不是GridBagLayout.一切都是有道理的,而每当我尝试使用GridBagLayout时,它都会粉碎我的灵魂.



7> OscarRyz..:

我使用GridBagLayout作为控件,但是因为java1.6我将使用GroupLayout很棒.

这里有一个截图和示例代码来使用它!

替代文字http://img145.imageshack.us/img145/7844/screenshot1dz8.png

    private void layoutComponents(){
        JPanel panel = new JPanel();

        GroupLayout layout = new GroupLayout(panel);
        panel.setLayout(layout);

        layout.setAutoCreateGaps(true);

        layout.setAutoCreateContainerGaps(true);
        SequentialGroup hGroup = layout.createSequentialGroup();

        JLabel nameLbl  = new JLabel("Name");
        JLabel countLbl = new JLabel("Amount");
        JLabel dateLbl  = new JLabel("Date(dd/MM/yy)");
        hGroup.addGroup(layout.createParallelGroup().
                addComponent(nameLbl).
                addComponent(countLbl).
                addComponent(dateLbl).
                addComponent(go));

        hGroup.addGroup(layout.createParallelGroup().
                addComponent(name).
                addComponent(count).
                addComponent(date));

        layout.setHorizontalGroup(hGroup);

        SequentialGroup vGroup = layout.createSequentialGroup();

        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(nameLbl).addComponent(name));
        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(countLbl).addComponent(count));
        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(dateLbl).addComponent(date));
        vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
                addComponent(go));
        layout.setVerticalGroup(vGroup);

        frame.add( panel , BorderLayout.NORTH );
        frame.add( new JScrollPane( textArea ) );
    }



8> jfpoilpret..:

我对大多数面板使用DesignGridLayout.

对于DesignGridLayout无法完全处理的罕见面板,我使用了Borderlayout和DesignGridLayout.

使用DesigngridLayout,您可以使用最少的代码行手动编写布局代码,这些代码行易于输入和读取:

DesignGridLayouut layout = new DesignGridLayout(myPanel);
layout.row().grid(lblFirstName).add(txfFirstName).grid(lblSurName).add(txfSurName);
layout.row().grid(lblAddress).add(txfAddress);
layout.row().center().add(btnOK, btnCancel);

面板网格的每一行由一行代码定义.如您所见,"绘制"您的面板非常简单.

另外,我发现DesignGridLayout有一些独特的功能(例如它的" 智能垂直调整大小 ").

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有