Layouty javy

0

Witajcie. Zacząłem jakiś tydzień temu swoją przygodę z javą i próbuję teraz poskładać swoje pierwsze gui w javie. Dążę do zrobienia czegoś takiego: http://i.imgur.com/kgDOW63.png Jak na razie największe problemy sprawia mi stworzenie gui, jakoże nigdy się tym nie zajmowałem i teraz mam coś takiego: http://i.imgur.com/OevXfBG.png Miałbym z tego miejsca teraz taką prośbę, używam do układania interfejsu biblioteki o nazwie FlowLayout i nie jestem pewny, czy dobrze robię wybierając właśnie go do takich zadań. czy moglibyście mi powiedzieć który layout byłby najlepszy to stworzenie takiego gui? Oraz jak go "zmusić", aby elementy interfejsu były w różnych linikach?

1

Polecam zajrzeć tutaj:
https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
Na pewno znajdziesz informacje, których szukasz :)

1

Ze swojej strony polecam JavaFX. Szczególnie, jeśli nie tworzysz layoutu drag&dropem. GUI jest o wiele ładniejsze a i API moim zdaniem przyjemniejsze. W JavieFX mógłbyś użyć VBoxa.

Jeśli jednak zostajesz przy Swingu, to chyba najczęściej używanym layoutem jest GridBagLayout, w którym rozmieszczasz komponenty w kolumnach i wierszach. W twoim przypadku byłaby to jedna kolumna.

2

Ja bym sugerował BoxLayout (ewentualnie VerticalLayout - kiedyś go napisałem, służy do rozmieszczania elementów różnej wielkości w jednej kolumnie). Weź też pod uwagę, że możesz w oknie (JFrame) umieszczać panele (JPanel), a dopiero w nich komponenty. Menadżery dla okna i dla paneli mogą być zupełnie różne.

0

BoxLayouty wydają się nieco lepsze do tego co robię. Obecnie osiągnąłem coś takiego: http://i.imgur.com/gAlH5EI.png Teraz zastanawia mnie jaką metodą mogę te pola tekstowe pomniejszyć. Próbowałem .setSize(); ale albo to nie ta metoda, albo ja coś źlę robię. Mógłby mi ktoś podsunąć tą metodę?

0

Wrzuc każde w panel i dopiero potem ustal rozmiar ;)

0

Przepraszam, że dopiero po takim czasie, ale piszę ten program tylko w momencie, gdy jestem na praktykach. :P Robię coś takiego:

...

			JFrame frame = new JFrame("New software");
			JPanel panel = new JPanel();
			JTextField usernameField = new JTextField();
			panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
			panel.add(usernameField);
			usernameField.setSize(50,50);
			frame.add(panel);
			frame.setSize(670,680);
			frame.setLocation(341,40);
			frame.setVisible(true);

Jednak w tym przypadku metoda .setSize nie ma zamiaru działać tak jakbym chciał. Może mi ktoś podać praktyczny przykład jak ją zastosować?

0

:D :D Ale ty myślisz trochę jak piszesz czy tak klepiesz na jana? Napisałem żebyś to opakował w panel po to żebyś mógł ustawić INNY layout dla panelu a inny dla opakowującego kontenera! A ty zrobiłeś panel i dałeś mu taki sam layout, co przecież nie ma sensu bo efekt będzie identyczny. Ustaw BoxLayout na całe okno, tak jak miałeś, a panel z textfieldem póki co zostaw defaultowo i ewentualnie potem zmień jak już będziesz rozumiał jak to działa ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1