Czy korzystać z graficznych designerów?

Czy korzystać z graficznych designerów?
bogdans
Moderator
  • Rejestracja:ponad 16 lat
  • Ostatnio:prawie 5 lat
0

Jestem zagorzałym przeciwnikiem designerów. Ale możliwe, że nie mam racji. Wczoraj zabawiałem się warcabami. Kod wyświetlający poniższe okno napisałem w 20 minut (w notepad++, musiałem więc dopisać wymagane importy). Plik źródłowy ma 1300 bajtów i po pominięciu pustych wierszy i wierszy z jedną klamerką ma 29 wierszy. Czy mógłby ktoś wyklikać podobne okno oraz porównać czas pracy i rozmiar pliku?


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
freemp3
  • Rejestracja:około 11 lat
  • Ostatnio:około 8 godzin
  • Lokalizacja:Miechów
  • Postów:284
0

Nie mam zbyt dużego doświadczenia w Javie, ale jeśli o mnie chodzi to staram się pisać ręcznie. Jeśli nie wiem jak coś zrobić wspomagam się designerem, sprawdzam jaki kod wygenerował i próbuję to przepisać po swojemu ;)


GA
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 5 lat
0

Przede wszystkim przykład jest "specyficzny".
Idealnie pasuje na pisanie z ręki, ponieważ jest schematyczny i powtarzający się.
W takim wypadku wydawałoby się, że builder się nie nadaje a jednak...
Niestety albo stety musiałem to rozbić na klasy bo inaczej bym się zaklikał :)
Stworzyłem sobie 5 klas(klasa dziedzicząca po JLabel(16 niepustych linijek), klasa z rzędem zaczynającym się od białego pola(40 linijek), analogicznie od czarnego(40), klasa główny panel(61) oraz klasa z metodą main(11)).
Łącznie żródła zajmują ok. 27kB(najwięcej formy generowane przez NetBeansy).
Zrobiłem przykład w ok. 10 min.
Plusem buildera jest to, że panel można podejrzeć bez odpalenia aplikacji.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12152
1

Przykład faktycznie jest specyficzny, dlatego że tło formularza jest bardzo proste i powtarzalne; Gdybym sam musiał stworzyć takie okienko, to albo położyłbym komponent na formularz i go oprogramował, albo malował bezpośrednio na kanwie okna; Najgorszym rozwiązaniem było by użycie 8x8 komponentów - najwięcej klikania i bawienia się z rysowaniem dwóch kolorów, choć i to można bardzo łatwo skrócić do minimum;

Ja nie znam się na Javie, jednak designery istnieją do wielu języków, także do tego w którym pracuję; Jeśli tworzę jakikolwiek program okienkowy, w którym formularze posiadają różnie porozrzucane komponenty, to nie wyobrażam sobie tworzenia komponentów ręcznie (implementując wszystko w kodzie); Z drugiej strony, jeśli elementy powtarzają się, układając w jakąś logiczną całość, to w takim przypadku można posłużyć się wyłącznie kodem;

Przede wszystkim trzeba zwrócić uwagę na to, że wszelkie edytory formularzy mają nas zwolnić z pisania kodu, na rzecz poklikania, à la WYSIWYG; Mocno upraszcza to pracę, bo nie trzeba kompilować kodu i uruchamiać aplikacji, aby zobaczyć jak będą wyglądały okna; No i dochodzi też to, że w kodzie można się walnąć, a przy złym ustawieniu komponentów czy formularza, wszystko widać od razu;

Ja od zawsze byłem fanem designerów, ale staram się z nich korzystać tak, aby nie dokładać sobie roboty; Jeśli wyklikanie ma mi pójść szybciej, to sobie klikam po formularzu i w OI, a jeśli nie - piszę kod.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
bogdans
Moderator
  • Rejestracja:ponad 16 lat
  • Ostatnio:prawie 5 lat
0

@garai, czasowo wygrałeś, za to kodu masz dużo więcej i chyba nie nadaje się on do dalszej rozbudowy. Ja mam 64 pola typu JButton, dodanie do planszy pionków to kilka wierszy jeśli pionki narysuje w jakimś gimpie, 0koło 40 wierszy jeśli pionki rysuję w kodzie Javy (klasa dziedzicząca po klasie Icon i metoda setIcon przycisków). Ponieważ są 64 komponenty, to łatwo się rozpoznaje w co kliknął użytkownik.
@furious programming

bo nie trzeba kompilować kodu i uruchamiać aplikacji, aby zobaczyć jak będą wyglądały okna;
chyba nie pracowałeś z żadnym IDE do Javy. Tam się nie kompiluje - zapisanie pliku jest równoznaczne ze skompilowaniem. W programie jak wyżej, zajmuje to ułamek sekundy.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Tuchów
  • Postów:12152
1

chyba nie pracowałeś z żadnym IDE do Javy.

Zgadza się i o tym nie wiedziałem; Jednak nie zmienia to faktu, że w przypadku normalnych aplikacji okienkowych, z reguły komponenty nie są układane w logiczną całość, a są w różnych miejscach i o różnych rozmiarach, więc o wiele szybciej i wygodniej jest sobie interfejs wyklikać;

Ja osobiście mam takie zdanie, że designer ma skrócić czas projektowania formularzy, jednak przy dużej ilości komponentów, które są powtarzalne i identyczne (lub dzielone na grupy), napisanie kodu jest szybsze i wygodniejsze; W zależności od formularza i jego zawartości, trzeba sobie wybrać odpowiedni sposób.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
bogdans
Moderator
  • Rejestracja:ponad 16 lat
  • Ostatnio:prawie 5 lat
0

W Delphi jestem ignorantem, ale wydaje mi się, że w Delphi jest alternatywa:

  • wyklikuję,
  • rozmieszczam komponenty ręcznie podając lokalizację i rozmiar.
    W Javie są gotowe menadżery rozkładu, rozmieszczające komponenty wg. pewnych reguł.

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
GA
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 5 lat
1

za to kodu masz dużo więcej

Nie bój się kodu :)

chyba nie nadaje się on do dalszej rozbudowy

Kod jest taki sam jak Ty masz. Zwykłe GUI.

W programie jak wyżej, zajmuje to ułamek sekundy.

Zgadza się, ale nie każdy program jest tak trywialny. Wyobraź sobie aplikację, która np. wstaje ok 1 min. Strata czasu, aby sprawdzać za każdym razem zmianę układu komponentów

Ja osobiście mam takie zdanie, że designer ma skrócić czas projektowania formularzy, jednak przy dużej ilości komponentów, które są powtarzalne i identyczne (lub dzielone na grupy), napisanie kodu jest szybsze i wygodniejsze; W zależności od formularza i jego zawartości, trzeba sobie wybrać odpowiedni sposób.

Zgadzam się od początku do końca.

flowCRANE
W tym rzecz - duże okna z wieloma komponentami i kupą kodu mogą "zapisywać się" i uruchamiać zbyt długo, by bawić się kodem;
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
3

a teraz weź jakiekolwiek okienko aplikacji typowo biznesowej - edycja kontrahenta. W zależności od ilości danych możesz mieć na jednym widoku i kilkadziesiąt RÓŻNYCH kontrolek. Słowo różnych (różne typy/rozmiary) jest tu słowem kluczem. Do tego dochodzi grupowanie "podobnych logicznie" elementów np. w groupboxach. W IDE widzisz efekt od razu, możesz wklepać przykładowe dane do kontrolki aby zobaczyć czy taki rozmiar wystarczy, poklikać sobie w ustawienia koloru/czcionki żeby było "pięknie".


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
1

To jest idealny przykład na robienie formy w kodzie ("dolna granica").
Prawie każdy inny przykład będzie pokazywał że projektowanie formy w kodzie jest nieefektywne.

Tu inne przykłady (też kontrolki w kodzie):
http://www.java-gaming.org/index.php?topic=15399.0

Tworzyłem dość złożone GUI w Delphi - po kilka zakładek, na każdej po kilka grup kontrolek. Czasami wizualnie jest problem żeby to wszystko ogarnąć. W wersji code-only w ogóle sobie tego nie mogę wyobrazić.

Jeśli masz do czynienia z ekranami typu Tcl/Tk, Mathplotlib to można robić w kodzie. Przy bardziej złożonych ekranach powstaje tyle zależności że w kodzie to jest nie do ogarnięcia (także w Javie).

Dlatego do Javy używam Netbeans - jedyny sensowny designer GUI.

Ale już do WWW mam bardziej podejście nie-wizualne.
Chociaż warto zrobić czasami wygląd HTML-owy wizualnie a potem ew. to oczyścić z wszelkiego nadmiaru.

Wizzie
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
0

Dlatego do Javy używam Netbeans - jedyny sensowny designer GUI.

Jak na tym tle wypada JavaFX Scene Builder?

0

chodzi wam o komponenty, robienie GUI? To w czym problem wstawiać buttony i inne rzeczy ręcznie? Wygodne to, efekt widać od razu bez odpalania programu, nie trzeba się bawić, oszczędza to czas. Równie dobrze możecie pisać w Assemblerze programy, ale po co skoro w c++ lub w javie i w innych językach jest łatwiej i szybciej i wiedzy takiej nie trzeba? Świat się rozwija, to, że coś teraz można zrobić szybciej i prościej, nie oznacza, że to jest gorsze. Sporo gier w Unreal Engine i w Unity powstało i powstaje, bo te silniki gier mają gotową fizykę, wiele rzeczy można wyklikać, modele 2d lub 3d drag & dropować, edytor terenu też jest. Oszczędza to czas ludziom, nie trzeba pisać specjalnie silnika do gry swojego, bo gotowe rozwiązania są dość profesjonalne i sprawdzają się dobrze.

Zresztą nie samym wyglądem program lub gra żyją. Co z tego, że ktoś wyklika GUI programu lub wyklika teren w Unity i przeciągnie modele 3d skoro taki program i gra są bezużyteczne bez oprogramowania tego. Button musi coś robić, podobnie jak model 3d w grze. Nadal programista pozostaje programistą i nadal ma masę roboty do zrobienia.
Ciekawe jak za 200 lat będzie wyglądało programowanie.
I ciekawe, czy za tysiąc lat w końcu będzie prawdziwa sztuczna inteligencja, wtedy to SI mogłaby pisać programy dla ludzi, ale na razie trudno mi sobie wyobrazić by SI ogarnęła pisanie programów i gier skoro bajecznie bogaty Google nie potrafi zrobić rozpoznawania mowy na youtube i w większości filmików w każdym zdaniu są błędy. Ten sam Google nie potrafi napisać lepszego Google Translate. Dlatego nie spodziewam się prędko prawdziwej sztucznej inteligencji, bo ta potrafiłaby mi przetłumaczyć tekst angielski na polski równie dobrze co zawodowi tłumacze i tego tłumaczenia zwykłego tekstu prędko się nie doczekamy.

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
0
Wizzie napisał(a):

Dlatego do Javy używam Netbeans - jedyny sensowny designer GUI.

Jak na tym tle wypada JavaFX Scene Builder?

Nie wiem, nie pracowałem z Java FX. Dotychczas mało spotykałem aplikacji biznesowych w tym środowisku, ale niedawno widziałem całkiem ładną i chyba się przekonam.

KR
  • Rejestracja:prawie 16 lat
  • Ostatnio:4 miesiące
  • Postów:2514
1

W tym specyficznym przypadku pewnie bym tez rysowal recznie po canvasie albo jakims paintboxie, ale generalnie preferuje przeklikiwanie od pisania. Zalezy co szybciej sie robi. Jakbym mial ustawiac przyciski i labele jakiegos formularza to recznie (piszac kod) by mi sie nie chcialo. Jak powtarzalny schemat to raczej pisalbym kod.


░█░█░█░█░█░█░█░█░█░█░█░
edytowany 1x, ostatnio: krwq
0

http://www.formdev.com/ a JFromDesigner dla Intellij IDEA?

Od NetBeans to juz wole eclipse...

vpiotr
Jeśli Cię stać żeby wybulić ponad 100 EUR na samego designera to możliwe że jest OK.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)