Есть ли GUI для создания GUI в Scala? - PullRequest
9 голосов
/ 20 декабря 2010

Есть ли что-то вроде WindowBuilder для Scala?

Ответы [ 2 ]

11 голосов
/ 20 декабря 2010

Я не знаю ни одного WYSIWYG GUI-компоновщика для Scala.Но вам это не нужно.На самом деле, строго говоря, у Scala нет GUI;он просто использует графический интерфейс базовой платформы (или GUI).

Итак, порт 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 для программной сборки GUI.Это не WYSIWYG, так что это не совсем то, что вы просите, но я предпочитаю это, потому что это WYMIWYG (что вы имеете в виду то, что вы получаете), которое со всеми инструментами GUI, которые я использовалдо сих пор, кажется, почти невозможно достичь.

2 голосов
/ 22 декабря 2010

Собрав GUI с помощью JBuilder (и предполагая, что WindowBuilder работает по тем же принципам), концептуально возможно разработать ваши скелеты GUI (как абстрактные классы) в Java. Затем вы можете расширить или использовать их из Scala. должно быть легко сделать это (заметьте, я говорю это должно быть , так как я этого не сделал, и я просто выдвигаю гипотезу о связанном, но не прямом опыте.)

В данном случае, когда я разрабатываю GUI, я создаю абстрактные «представления», абстрактные скелеты с соответствующими макетами, визуальными компонентами и т. Д., А также с предварительно определенными обратными вызовами для инициализации, уничтожения, создания видимого / невидимого нарезка резьбы и пр.

Затем я делю абстрактное «представление» на класс «конкретного представления», который выполняет тяжелую работу - регистрирует слушателей, логику графического интерфейса и т. Д. Для выполнения этих действий требуется больше смазки на локтях (иногда намного больше), чем просто смешивание Разметка GUI и логика. Но подход, которому я склонен следовать, делает разделение логики GUI и логики поведения. Он держит его в чистоте.

Итак, вернемся к вашему вопросу: должна быть возможность определить ваш класс "конкретного вида" в Scala. С полной поддержкой функций, таких как объекты первого значения, замыкания, лямбды и все вкусности FP, стало бы намного проще реализовать слушатели и обработчики действий потоков с Scala.

Вы должны попробовать и сообщить нам, как это происходит (и возможно ли это или достаточно легко сделать его стоящим).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...