Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Нативный GUI


Автор: nerezus 8.6.2008, 11:03
На чем делать гуй для программ, чтобы он был в стиле ОС, на которой запущена прога?

Откопал 2 варианта: swt и Qt
Собственно обнаружил проблемы: в первом нет редактора форм(Eclipse SWT Designer Plugin датированный 2003 годом не считаем), а второй требует для неопенсурс-программ вливание определенного количества денег(и немаленького).

Я прав? Или все-таки есть варианты?

Автор: Platon 8.6.2008, 11:07
А играться с L&F не пробовал?

Автор: man_without_face 8.6.2008, 11:07
Вообще для выбора GUI есть Look & Feel'ы разные. Но как я понимаю, вам нужен построитель форм. Проще всего проинсталить NetBeans. Но сгенерированный код, чесноговоря, гавн0. Как тут не крути. Я юзал Eclipse SWT Designer. Там по лицензии триаловской вроде 30 дней юзать можно.

Автор: powerOn 8.6.2008, 11:43
Модератор: Название темы должно отражать ее суть!



Автор: ivg 8.6.2008, 12:56
Цитата(nerezus @  8.6.2008,  14:03 Найти цитируемый пост)
в первом нет редактора форм

Есть и достаточно сторонних плагинов. Например http://cloudgarden.com/jigloo/index.html.

Автор: nerezus 8.6.2008, 21:58
Цитата

Вообще для выбора GUI есть Look & Feel'ы разные
 Они сильно отличаются все же от системного.

 

Цитата

Есть и достаточно сторонних плагинов. Например этот.
 Спс, качаю.

P.S. Кто что скаже о Qt(дурацкую лицензию не упоминать  smile )

Добавлено через 8 минут и 30 секунд
оффтоп: Простите, а как может лицензия ограничивать коммерческое использование гуй-билдера, если продукт его работы не связан с самим билдером и следовательно уже можент распространяться по любой лицензии? )

Автор: COVD 9.6.2008, 05:11
Цитата

На чем делать гуй для программ, чтобы он был в стиле ОС, на которой запущена прога?


На swing и использовать SystemLookAndFeel : 

http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/plaf.html

Автор: nerezus 9.6.2008, 06:37
Цитата

На swing и использовать SystemLookAndFeel : 
 Ну оно все равно чужеродно смотрится, т.к. отрисовывается самой джавой.

К примеру разное рассттояние в меню между пунктом и разделителем и т.д.

А если у пользователя стоит какой-нить StyleXP?
Насколько помню по другому выглядело оно.

Автор: nerezus 9.6.2008, 06:57
Цитата

Есть и достаточно сторонних плагинов. Например этот.
 Если указывать хэндлер в свинге, то программа падает - типа статик метод вызывает нестатик.
Если дописать статик - то все норм.

Автор: man_without_face 9.6.2008, 22:00
Есть такая штука xplookandfeel погугли и найдёшь. Думаю из названия понятно всё.

Автор: w1nd 9.6.2008, 23:22
Цитата(nerezus @  9.6.2008,  06:37 Найти цитируемый пост)
Ну оно все равно чужеродно смотрится <...>

Есть грешки, конечно, но чтобы "чужеродно"... Виджеты SWT и QT в Windows смотрится не менее "чужеродно". 

Цитата(nerezus @  9.6.2008,  06:37 Найти цитируемый пост)
т.к. отрисовывается самой джавой.

Не забывайте о том, что гибкость и функциональность компонент только и достигается отказом от "системного". Многие вещи, которые с помощью Swing делаются легко и непринуждённо, в SWT делаются исключительно через зад (не говоря уже о том, что SWT мало чего стоит без JFace). А в QT компоненты легковесные, как и в Swing.

Добавлено через 2 минуты и 12 секунд
Цитата(nerezus @  9.6.2008,  06:37 Найти цитируемый пост)
А если у пользователя стоит какой-нить StyleXP?

При установке system lnf все эти стили цепляются и приложение выглядит аналогично прочим.

Автор: xeye 11.6.2008, 12:44
Цитата(w1nd @ 9.6.2008,  23:22)
Многие вещи, которые с помощью Swing делаются легко и непринуждённо, в SWT делаются исключительно через зад (не говоря уже о том, что SWT мало чего стоит без JFace)

пример таких "непринужденных" вещей в свинге интересно улышать.
а то, что гуй система от IBM разделена на два компонента (swt и jface) это скорее в плюс, чем в минус

Автор: 1024 15.6.2008, 04:33
Цитата

пример таких "непринужденных" вещей в свинге интересно улышать.


http://forum.vingrad.ru/index.php?showtopic=210349&view=findpost&p=1508494

Автор: w1nd 16.6.2008, 16:14
Цитата(xeye @  11.6.2008,  12:44 Найти цитируемый пост)
пример таких "непринужденных" вещей в свинге интересно улышать.

Вообще-то абсолютно всё. Навскидку - нельзя создать компонент без родителя. Нельзя создать диалог, не наследуясь от него. Или вот, посмотрите на примерчики и на их исходный код: http://www.crionics.com/products/opensource/faq/swing_ex/SwingExamples.html

Цитата(xeye @  11.6.2008,  12:44 Найти цитируемый пост)
а то, что гуй система от IBM разделена на два компонента (swt и jface) это скорее в плюс, чем в минус

Обалденный плюс - всегда и везде тащить за собой eclipse rcp smile Правда, эти чучела из ibm так и делают - у них eclipse даже внутри сервера приложений.

Автор: programador 24.6.2008, 00:42
Согласен, что SWT "утомляет", приходится сильно перестраиваться. Многие вещи делаются непривычно. Тоже как-то хотел создавать приложения с "родным" интерфейсом используя тот же SWT . Но потом обнаружил, что Свинговский 
Код

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

хорошо справляется с поставленной задачей (даже если в системе установлены скины и нестандартные стили). Даже те, кто считают Java тормознутой не могли такие программы идентифицировать, как те что написаны на "самом медленном языке" smile . Кроме того существуют такие проекты как http://swingwt.sourceforge.net/, что позволяют "нативизировать" Swing-приложение. 
От визуальных редакторов практически отказался, т.к. большинство из них грешат тем, что плохо разделяют логику и представление данных, а также ограничивают возможности тонкой настройки внешнего вида приложения. Это касается и коммерческих и некоммерческих редакторов. Единственный визуальный редактор, что мне понравился своим идеологическим подходом - это QT Designer, да и вообще многие решения QT  достаточно интересны.

Автор: 1024 24.6.2008, 07:01
Цитата

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


Открой для себя JBuilder (версии по 2006, новый - такое ж гамно как остальные)

Автор: vdim 15.2.2009, 23:27
У меня вот такая незадача: есть бинарь откомпилированый под windows. Надо его как-то запустить под linux. Краем уха слышал, что это вполне реально, т.к. можно подложить нужные библиотики куда надо и все заведется. А пока падает с таким логом: 

Код

!SESSION 2009-02-14 21:34:04.187 -----------------------------------------------                                             
eclipse.buildId=I20080617-2000                                                                                               
java.version=1.5.0_15                                                                                                        
java.vendor=Sun Microsystems Inc.                                                                                            
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU                                                                 
Command-line arguments:  -os win32 -ws win32 -arch x86                                                                       

!ENTRY org.eclipse.osgi 4 0 2009-02-14 21:34:07.636
!MESSAGE Application error                         
!STACK 1
org.eclipse.swt.SWTError: No more handles
        at org.eclipse.swt.SWT.error(SWT.java:3803)
        at org.eclipse.swt.SWT.error(SWT.java:3695)
        at org.eclipse.swt.SWT.error(SWT.java:3666)
        at org.eclipse.swt.graphics.Image.<init>(Image.java:730)
        at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:162)
        at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:227)
        at org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:205)
        at org.eclipse.ui.internal.Workbench.initializeImages(Workbench.java:1485)
        at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:537)
        at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161)
        at org.eclipse.ui.internal.ide.application.IDEApplication.createDisplay(IDEApplication.java:143)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:88)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1236)

!ENTRY org.eclipse.osgi 2 0 2009-02-14 21:34:07.720
!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
!SUBENTRY 1 org.eclipse.osgi 2 0 2009-02-14 21:34:07.720
!MESSAGE Bundle update@plugins/org.eclipse.swt.wpf.win32.x86_3.4.1.v3449c.jar [19] was not resolved.
!SUBENTRY 1 org.eclipse.osgi 2 0 2009-02-14 21:34:07.720
!MESSAGE Bundle update@plugins/org.eclipse.swt.win32.win32.x86_64_3.4.1.v3449c.jar [79] was not resolved.
!SUBENTRY 1 org.eclipse.osgi 2 0 2009-02-14 21:34:07.720
!MESSAGE Bundle update@plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.0.101.R34x_v20080731/ [95] was not resolved.
!SUBENTRY 1 org.eclipse.osgi 2 0 2009-02-14 21:34:07.721
!MESSAGE Bundle update@plugins/org.eclipse.equinox.launcher.wpf.win32.x86_1.0.101.R34x_v20080731/ [118] was not resolved.


P.S. amd64 + opensuse-11.1 + kernel 2.6.27.7-9-default + wine-1.1.9 + стоит java версия под wine 1.6u12

Автор: ecologist 16.2.2009, 10:50
Вот она - SWT-ятина поганая smile Похоже именно ее библиотеки надо добавлять.

Автор: Amp 20.2.2009, 14:05
QtJambi в последний раз разрелизится версией 4.5 в марте этого года, после чего поддерживаться будет еще год. Последующее развитие данного биндинга сомнительно, ибо сообществу на биндинг, как я понимаю,  положить. 

Автор: SoulKeeper 20.2.2009, 20:25
QT это конечно хорошо, но уж сликом он не давишный. 

Писать на нем трудно после свинга.

Автор: Platon 20.2.2009, 21:05
Писать не особо сложно, но вот большого смысла таскать с собой 10мегов GUIвнобиблиотек  я не нахожу. Поработав со Swing, я понял, что он весьма неплох.

Автор: kamre 21.2.2009, 15:09
Цитата(Platon @ 20.2.2009,  21:05)
Писать не особо сложно, но вот большого смысла таскать с собой 10мегов GUIвнобиблиотек  я не нахожу. 

Ну если программка не hello world, то это нормально. Тем более можно и статически линковать, а потом еще пакерами дожимать (при разработке на плюсах, ясное дело). А при разработке на Java действительно лучше Swing или SWT (если уж очень нативное поведение необходимо).

Цитата(Platon @ 20.2.2009,  21:05)
Поработав со Swing, я понял, что он весьма неплох.

Да уж, http://forum.vingrad.ru/index.php?showtopic=24644&view=findpost&p=1768998, только вот тормозит и памяти жрет до фига. Ну и по скорости 2d графики также http://trac-hg.assembla.com/jgears/wiki/ResultsHome до Qt4.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)