Подтвердить что ты не робот

Какой менеджер макетов вы используете?

Какой менеджер компоновки GUI GUI использует каждый пользователь? В последнее время я использовал MigLayout, в котором есть некоторые мощные элементы управления компонентами. Просто хотелось посмотреть, что другие разработчики используют, кроме стандартных JDK.

4b9b3361

Ответ 1

MiGLayout - это менеджер компоновки графического интерфейса, который широко используется разработчиками Java.

Ответ 2

GridBagLayout можно использовать. Как только вы привыкнете к его использованию, он отлично работает. Я думаю, что стандартные менеджеры по планированию JDK довольно эффективны сами по себе. Кроме того, вы можете минимизировать зависимость от сторонних библиотек.

Ответ 3

МиГ и FormLayout (JGoodies) отлично подходят для ручной компоновки (и почти все макеты в конечном итоге становятся ручными). Мой самый большой совет состоит в том, чтобы проектировать ваши взгляды, чтобы вы могли полностью вырвать макет и повторно реализовать его, не оказывая влияния на ваше приложение (хорошее разделение зрения и контроллера здесь ключевое).

Определенно взгляните на подход JGoodie PresentationModel для реализации "немых" представлений. Я использую этот метод с построителем GUI (я использую GroupLayout с плагином Jigloo GUI builder) для отбрасывания быстрых прототипов. После 3 или 4 итераций, которые обычно выходят из окна, и мы выполняем повторное выполнение с использованием MiG или FormLayout.

EDIT: Поскольку я написал это, я перешел на использование МиГ для всех своих макетов, и я больше не использую построитель графического интерфейса - это просто слишком просто, чтобы проложить вещи с помощью МиГ.

Ответ 4

Последнее приложение Swing я работал над JGoodies 'FormsLayout.

Ответ 5

Я использую GridBagLayout. Похоже, что он использует много кода, но он делает очень красивые макеты.

Я также хотел бы объединить BorderLayout с панелями GridBagLayout для большой настраиваемости.

Ответ 6

Я использую для GridBagLayout для элемента управления, но поскольку java1.6 я использую GroupLayout, это просто.

Вот скриншот и пример кода, чтобы использовать его!

alt text 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 ) );
    }

Ответ 7

Я использую 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 имеет некоторые уникальные функции (например, его интеллектуальное вертикальное изменение размера).

Ответ 8

Я большой поклонник использования TableLayout вместо GridBagLayout. Все имеет смысл, тогда как каждый раз, когда я пытаюсь использовать GridBagLayout, он сокрушает мою душу.

Ответ 9

GridBagLayout является мощным, но вполне примитивным: код, который соединяет макет, очень многословен. Эта утилитная библиотека (фактический только 1 файл jar, содержащий около 10 классов) упрощает множество работ: http://code.google.com/p/painless-gridbag/ Следующий фрагмент цитируется из домашняя страница этого сайта:

    PainlessGridBag gbl = new PainlessGridBag(getContentPane(), false);

    gbl.row().cell(lblFirstName).cell(txtFirstName).fillX()
             .cell(lblFamilyName).cell(txtFamilyName).fillX();
    gbl.row().cell(lblAddress).cellXRemainder(txtAddress).fillX();

    gbl.doneAndPushEverythingToTop();

Ответ 10

Как общий обзор, вы можете найти статью, которую я написал на прошлой неделе на солнце, чтобы быть полезной. Он не обновляется с последними менеджерами макетов, но он концентрируется на эффективном размещении менеджеров макетов, а не пытается сделать все с помощью одного макета.

См. http://developer.java.sun.com/developer/onlineTraining/GUI/AWTLayoutMgr

Ответ 11

Я обнаружил, что для любого нетривиального GUI я использую несколько макетов с вложенными подпанелями, где главная панель может иметь GridBagLayout и каждую подпанель (обычно без рамки или указания, что это панель), где это возможно, использует более простую компоновку. Обычно я использую BorderLayout, FlowLayout и BoxLayout для небольших, более простых подпанелей. Разделение небольших разделов графического интерфейса на субпанели и использование простейшей компоновки, позволяющей контролировать этот раздел графического интерфейса, вы можете создавать сложные, хорошо организованные дисплеи без слишком большой головной боли из GridBagLayout множества опций. Кроме того, группируя функции отображения в панель, он создает более читаемый код.

Ответ 12

Spring макет, который был разработан для создателя мантиссы gui, который является частью netbeans.

Ответ 13

Я использовал GroupLayout. Опять же, его стандартный менеджер компоновки JDK с Java6, но вы также можете найти библиотеку.

Ответ 14

Я всегда был большим поклонником GridBagLayout. Он очень похож на HTML-таблицы, поэтому он интуитивно понятен тем веб-программистам.

Ответ 15

Я начал использовать различные вложенные макеты, а затем перешел к GridBagLayout (что довольно расстраивает). С тех пор я попробовал FormLayout (но обнаружил, что он не подходит ни к чему, кроме форм), и решительно остановился на TableLayout, в целом я очень доволен.

С тех пор я обнаружил MiGLayout, и хотя я не сделал больше, чем играю с ним, он кажется очень способным, очень похожим на TableLayout и, вероятно, немного чище.

Большим плюсом для меня является то, что MiGLayout настроен на то, чтобы стать частью JDK, поэтому я намерен использовать его в значительной степени исключительно, когда он это делает.

Другая вещь, которую нужно помнить, - это то, что независимо от того, какой тяжелый LayoutManager вы планируете, всегда есть место для некоторых более простых менеджеров компоновки, таких как GridLayout. Я видел некоторые ужасные вещи, сделанные с GridBagLayout, которые можно было бы сделать намного проще с помощью более простого менеджера компоновки.

Ответ 16

Я предпочитаю свести к минимуму зависимости от сторонних библиотек, поэтому обычно это диалоговое окно BoxLayout и GridBagLayout для "сложных" макетов. GridBagLayout достаточно легко понять, но немного сложно настроить. Я написал себе инструмент для создания кода из макетов HTML (надеюсь, что это тоже помогает другим): http://www.onyxbits.de/content/blog/patrick/java-gui-building-gridbaglayout-manager-made-easy

Ответ 17

Единственный менеджер макетов, который я нашел, что я на самом деле , как, является Relative Layout Manager. Диспетчер относительной компоновки работает таким образом, который согласуется с тем, как диалоговые окна концептуально организованы. Одна обратная сторона заключается в том, что, хотя этот менеджер компоновки имеет дело с аддитивными ограничениями. По-видимому, это не касается ограничений отношения. К счастью, он довольно хорошо разработан, и я смог реализовать эту функцию.

Ответ 19

Я немного новичок в Java.

Я попробовал GridBagLayout, сдался, затем попробовал BoxLayout, затем сдался, затем создал свой собственный Custom Layout, который работал. С GridBag и Box я поставил свое лучшее предположение, и механизмы компоновки решили сделать что-то другое, без видимого способа их отладки.

С помощью своего пользовательского макета я мог распечатать координаты, ширину и высоту, чтобы узнать, где это происходит. Его немного мати, помещая вещи, но у вас есть полная сила java для использования, а не ограниченная лексика одного из встроенных менеджеров макетов.

Конечно, это было только для домашнего проекта, вам никогда не позволили бы это делать на работе.

Ответ 20

Я использую GridBagLayout для формы, такой как макеты, используйте BorderLayout для простых макетов и FlowLayout для количества горизонтальных значков/кнопок, у которых есть промежутки между ними. Netbeans также является хорошим графическим дизайнером, который может избежать множества утомительных компоновки компоновки, чтобы сэкономить ваше время.

Ответ 21

Я начал использовать Swing недавно, и я использую GridBagLayout.

Ответ 22

Мне было больно всех тех менеджеров макетов, которые нуждались во многих настройках, которые были очень читабельны или изнурительны, чтобы сделать это вручную, поэтому я написал своего очень простого лаута-менеджера, который использует абстракцию двух фотокорнеров, поддерживающих каждый компонент на месте. Вы можете добавить свой компонент следующим образом: parent.add(child,"topleft(0, 0.5)bottomright(0.5,1.0)");

Посмотрите здесь https://github.com/hageldave/UsefulStuff/blob/master/src/PhotoCornersLayout.java;) вы сами отвечаете за правильный макет, не заставляя его не проверять перекрытия или другие недостатки вашего макета.