Есть ли GUI для создания GUIs в Scala?
есть что-то вроде WindowBuilder для Scala?
2 ответов
Я не знаю ни одного WYSIWYG GUI builder для Scala. Но он тебе не нужен. На самом деле, строго говоря, Scala не есть GUI; он просто использует GUI базовой платформы (или GUIs).
Итак, порт JVM Scala использует AWT, Swing или SWT, а порт CLI Scala использует WinForms или WPF. Я слышал слухи о портах Scala для среды выполнения ECMAScript и среды выполнения Objective-C, и они предположительно будут использовать HTML5 и Quartz/Cocoa, соответственно.
это означает, что вы можете просто использовать существующие инструменты, такие как Expression Blend для WPF или Matisse для Swing.
обратите внимание, однако, что, по крайней мере, для Swing, есть блестящий scala.swing
библиотека, которая содержит встроенный DSL для программного построения GUIs. Это не WYSIWYG, так что это не совсем то, что вы просите, но я предпочитаю его, потому что это WYMIWYG (что вы Mean Это то, что вы получаете), который со всеми инструментами GUI у меня есть до сих пор, кажется, почти невозможно достичь.
имея build GUIs с JBuilder (и предполагая, что WindowBuilder работает по тем же принципам), концептуально можно разработать скелеты GUI с голой костью (как абстрактные классы) в Java. Затем вы можете расширить или использовать их из Scala. Это должно быть легко снять это (обратите внимание, что я говорю он должен быть!--2--> поскольку я этого не сделал, и я чисто гипотезирую из связанного, но не прямого опыта.)
случай в точке, когда я разрабатываю GUIs, я делаю создайте абстрактные "представления", абстрактные скелеты с соответствующими макетами, визуальными компонентами и т. д., а также с заранее определенными обратными вызовами для инициализации, уничтожения, сделайте видимым/невидимым, потоковым и т. д.
затем я подкласс абстрактный "вид" в класс "конкретный вид", который делает тяжелый подъем - регистрация слушателей, логика GUI и т. д. Выполнение вещей таким образом требует больше смазки локтя (иногда намного больше), чем просто смешивание макета GUI и логики. Но подход Я склонен следовать делает разделение логики GUI и логики поведения. Он держит его в чистоте.
Итак, вернемся к вашему вопросу: должно быть возможно определить ваш класс "конкретный вид" в Scala. При полной поддержке функций как объектов первого значения, закрытия, лямбд и всех лакомств FP, должно быть намного проще реализовать прослушиватели и обработчики действий потоков с помощью Scala.
вы должны дать этому попробовать и сообщить нам, как это происходит (и возможно ли это или достаточно легко, чтобы сделать его достойным продолжения.)