Swing Generator
Мне нужно разработать Java-интерфейс с использованием свинга.
Несколько лет назад я немного развился со свингом.
Но это было довольно утомительно, видите ли, тогда не было много инструментов, чтобы помочь вам.
Но я верю, что сегодня должно быть проще, должны быть инструменты.
Я хотел бы использовать какой-то генератор, а может быть, утилиту или даже фреймворк.
Я знаю, что в Eclipse есть несколько плагинов, а в Netbeans есть хороший встроенный инструмент. Я также слышал хорошие вещи о Jide Framework.
Но, тем не менее, я не знаю ни одного из них.
Есть ли инструмент / Утилита / Генератор /Framework, который вы использовали и действительно помогли вам?
Очевидно, я бы предпочел что-то бесплатное, но если вы знаете что-то действительно хорошее и стоит денег, это тоже может сработать.
Спасибо.
8 ответов
В течение нескольких лет я использовал NetBeans, встроенный в редактор форм "Matisse". Он имеет преимущество в том, что встроен в IDE, поэтому редактирование форм и генерация кода довольно просты. Если вы новичок в Swing, это может стать большим стимулом (если вы продолжаете использовать NetBeans в качестве вашей IDE).
Однако есть некоторые проблемы:
- Вы не можете легко переместить форму в другую среду разработки. Сгенерированный код может работать, но сами данные формы хранятся в файле XML.
- Если еще два человека редактируют форму одновременно, в SVN/CVS могут возникнуть конфликты, которые практически невозможно устранить. XML не совсем понятен человеку.
- В прошлом я обнаружил, что XML-файл формы может сам себя повредить, что приведет к ошибкам генерации формы.
- Редактор форм может иногда иметь собственное мнение, разрушая ваше расположение, когда вы делаете что-то столь же простое, как изменение размера элемента управления.
Несмотря на все вышесказанное, я продолжал использовать его, так как ничто иное не показалось мне привлекательным.
На самом деле быстрый способ написания Swing-фреймов, который я нашел до сих пор, - это использовать Groovy SwingBuilder, но вы должны включить в свой проект jar groovy, чтобы использовать его. Это пример, взятый с их сайта, в основном это синктактический сахар, но он помогает:
def frame = swing.frame(title:'Frame', defaultCloseOperation:JFrame.EXIT_ON_CLOSE, pack:true, show:true) {
vbox {
textlabel = label("Click the button!")
button(
text:'Click Me',
actionPerformed: {
count++
textlabel.text = "Clicked ${count} time(s)."
println "Clicked!"
}
)
widget(sharedPanel())
widget(sharedPanel())
}
}
В противном случае есть некоторый "визуальный" подход к проблеме, но они не позволяют вам так быстро интегрироваться с написанным вами интерфейсом (например, jvider), у NetBeans и Eclipse есть несколько плагинов для грязной работы, но, как и раньше, вы можете: т интегрировать так легко.
Мое предложение будет WindowBuilder Pro. Это GUI дизайнер, который поставляется как плагин для Eclipse IDE.
Вы можете использовать его для генерации графических интерфейсов Swing, SWT или GWT и даже генерировать некоторый код Eclipse RCP, если вам нужно. Я должен сказать, что это работает довольно хорошо для меня. Я не использовал его для генерации кода Swing, так как вместо этого я предпочитаю работать с SWT.
Могу ли я смиренно предложить Metawidget?
Для разработки пользовательского интерфейса требуется другой подход - устраняется большая часть трудоемкой, склонной к ошибкам работы, при этом сохраняется гибкость традиционных наборов инструментов. Он интегрируется с существующим внешним интерфейсом (в вашем случае Swing) и внутренним (я полагаю, Java) и работает во время выполнения (без генерации кода).
Здесь есть несколько коротких вступительных видео:
http://metawidget.org/videos.html
Если у вас будет возможность взглянуть, я был бы очень признателен за ваш отзыв.
С Уважением,
Ричард.
Visual Swing Eclipse является многообещающим выскочкой. Это не самая стабильная вещь в мире, но она выполняет все формы в коде, поэтому нет отдельных файлов, которые трудно прочитать и объединить в системе контроля версий. Когда вы впервые попробуете это, нужно привыкнуть. Но как только вы научитесь обходить ошибки, вы довольно быстро разрабатываете графический интерфейс Swing.
С точки зрения GUI Builders, NetBeans и IDEA (теперь с открытым исходным кодом с бета-версией 9.0) оба имеют бесплатные GUI Builders.
У GUI Builders есть все недостатки, с которыми говорил Джейсон. Если вам нужен хороший контроль над тем, что происходит, но вы все же хотите что-то вменяемое, чтобы написать сложный графический интерфейс от руки, посмотрите MigLayout.
Я хотел бы пойти с Matisse, если вы не хотите использовать GUI Builder, и, как упомянул Джейсон, есть недостатки, но вам также необходимо включить файл JAR, который используется компоновками Matisse, это может быть или не быть проблемой.
Но если вы собираетесь разрабатывать пользовательский интерфейс в разгаре, вы скоро обнаружите, что у большинства разработчиков графического интерфейса есть много недостатков, и когда вам нужно что-то изменить, сгенерированный код не всегда понятен и раздут. Вы также обнаружите, что, как только вы станете опытным, вы сможете написать пользовательский интерфейс намного быстрее, чем строитель GUI, и вы действительно поймете, что происходит.
Поэтому я говорю, что держитесь подальше от разработчиков графического интерфейса, вы создадите более качественный и более удобный для пользователя интерфейс, и с некоторым временем и опытом вам не захочется использовать графический интерфейс. Просто начните с некоторых основных учебных пособий по Swing.
Вы можете избежать кода, созданного разработчиками графического интерфейса, используя ReflectionUI.
Преимущества: вы мгновенно создаете свой графический интерфейс, а затем настраиваете его визуально (или с помощью небольшого количества кода, если вам нужно что-то очень конкретное).