2010-12-20 19 views

Odpowiedz

11

Nie znam żadnego konstruktora GUI WYSIWYG dla Scala. Ale ty go nie potrzebujesz. W rzeczywistości, ściśle mówiąc, Scala nie ma ma GUI; po prostu używa GUI platformy bazowej (lub GUI).

Tak więc port JVM Scala używa AWT, Swing lub SWT, a port CLI Scala używa WinForm lub WPF. Słyszałem plotki o portach Scala w środowisku wykonawczym ECMAScript i środowisku wykonawczym Objective-C, a te prawdopodobnie używały odpowiednio HTML5 i Quartz/Cocoa.

Oznacza to, że można po prostu użyć istniejących narzędzi, takich jak Expression Blend dla WPF lub Matisse for Swing.

Należy jednak pamiętać, że przynajmniej w przypadku Swing istnieje genialna biblioteka scala.swing, która zawiera programowo osadzone łącze DSL do budowania GUI. To nie jest WYSIWYG, więc nie jest to dokładnie to, o co prosisz, ale wolę to, ponieważ to WYMIWYG (What You Mean Is What You Get), które przy użyciu wszystkich narzędzi GUI, które dotychczas używałem, wydaje się być być prawie niemożliwe do osiągnięcia.

+0

"Port JVM Scala używa AWT, Swing lub SWT, a port CLI Scala używa WinForm lub WPF Słyszałem plotki o portach Scala do środowiska wykonawczego ECMAScript i środowiska wykonawczego Objective-C" Dowiedzieć się, gdzie byłeś usłyszeć te plotki? Brzmią interesująco! – soc

+0

Muszę się zgodzić, ale utknąłem kilka razy z niektórymi odmalowanymi wydarzeniami, których nie mogłem rozwiązać. Pomyślałem, że GUI może wygenerować poprawny kod, z którego mogę się uczyć. (Nie znam Java ani Swinga). Ale może przykłady to lepszy pomysł. :) –

2

Po utworzeniu GUI za pomocą JBuildera (i zakładając, że WindowBuilder działa na tych samych zasadach), możliwe jest koncepcyjne rozwijanie szkieletów GUI o gołej kości (jako klas abstrakcyjnych) w Javie. Następnie możesz je rozszerzyć lub użyć z poziomu Scala. To powinny być łatwo wyciągnąć że off (uwaga mówię powinno być ponieważ nie zrobili, a ja czysto związane z hipotezą, ale nie bezpośrednie doświadczenie.)

Sprawa w momencie, kiedy opracowuję GUI, tworzę abstrakcyjne "widoki", abstrakcyjne szkielety z odpowiednimi układami, wizualnymi komponentami itp. oraz wstępnie zdefiniowane oddzwanianie w celu inicjalizacji, zniszczenia, uczynienia widocznym/niewidocznym, gwintowaniem itp.

Następnie , Podklasuję abstrakcyjny "widok" w klasę "konkretnego widoku", która dokonuje ciężkiego podnoszenia - rejestrowanie słuchaczy, logika GUI, itp. Robienie tego w ten sposób wymaga więcej smaru kolanowego (czasami o wiele więcej) niż zwykłe mieszanie GUI układu uff i logika. Ale podejście, które podążam, czyni oddzielenie logiki GUI i logiki zachowania. Utrzymuje to w czystości.

Wracając do pytania: Powinna istnieć możliwość zdefiniowania klasy "konkretnego widoku" w Scali. Przy pełnym wsparciu dla funkcji jako obiektów pierwszej wartości, zamknięcia, lambdas i wszystkich pozytywów FP, powinno być o wiele łatwiej wdrażać detektory i programy do obsługi wątków w Scali.

Powinieneś dać to spróbować i daj nam znać jak to działa (i czy jest to wykonalne lub wystarczająco łatwe do wykonania, że ​​warto dążyć.)