Czy istnieje odpowiednik "Group Box" W Java Swing?

Próba zbudowania aplikacji GUI w Javie / Swing. Jestem przyzwyczajony głównie do "malowania" GUI Po Stronie Windows narzędziami takimi jak VB (a dokładniej Gupta SQLWindows... ciekawe ile osób wie co to jest; -)).

Nie mogę znaleźć odpowiednika pudełka grupowego w swingu...

W polu grupowym masz kwadratowe pole (zwykle z tytułem) wokół kilku powiązanych widżetów. Jednym z przykładów jest pole grupy wokół kilku przycisków radiowych (z tytułem wyjaśniającym o czym są przyciski radiowe, np. Grupowe pole zatytułowane " Sex "z przyciskami radiowymi "Male" i "Female").

Trochę Szukałem... jedynym sposobem, który znalazłem było dodanie pod-pane, ustawić obramowanie na pod-pane, a następnie dodać wszystkie widżety w "grupa" do Pod-pane. Czy jest na to bardziej elegancki sposób?

Author: Jason Plank, 2009-01-10

7 answers

Utwórz JPanel i dodaj do niego swoje radiobuttony. Nie zapomnij ustawić układu Panelu JPanel na coś odpowiedniego.

Następnie wywołaj panel.setBorder(BorderFactory.createTitledBorder(name));

 118
Author: David Koelle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-10 21:00:10

Inni już skomentowali JPanel i używają TitledBorder, to jest w porządku.

Jednak podczas grania Swing Layoutmanagerami, może być irytujące, że komponenty w różnych panelach Jpanel nie mogą być prawidłowo wyrównane (każdy panel ma swój własny LayoutManager).

Z tego powodu jest dobrą praktyką (sprawdź "JGoodies" w Internecie, aby uzyskać więcej szczegółów) w Swing GUI nie używać TitledBorders, ale raczej oddzielnych grup komponentów w Jpanelu przez JLabel, a następnie poziomy JSeparator.

Ref. "Pierwsza Pomoc dla huśtawki "

 7
Author: jfpoilpret,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-20 11:38:30

Pole grupy jest tylko zbiorem "logicznie zgrupowanych widżetów". To w świecie swingu jest JPanel.

Dodaj widżety do JPanel.

Ustaw jego typ obramowania na 'Titled Border' i podaj tytuł, taki sam jak nazwa ramki VB6.

Voila. Masz swoją grupową skrzynkę.
 3
Author: Nivas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-10 21:02:56

Oto cytat z jradiobutton javadocs odkąd wspomniałeś o przyciskach radiowych.

Implementacja przycisku radiowego -- elementu, który można wybrać lub odznaczyć i który wyświetla jego stan użytkownikowi. Używany z obiektem ButtonGroup do tworzenia grupy przycisków, w której można wybrać tylko jeden przycisk na raz. (Utwórz obiekt ButtonGroup i użyj jego metody add, aby włączyć obiekty JRadioButton do grupy.)

Uwaga: obiekt ButtonGroup jest logicznym grupowanie - nie fizyczne grupowanie. Aby utworzyć panel przycisków, należy nadal utworzyć JPanel lub podobny obiekt kontenera i dodać do niego obramowanie, aby oddzielić go od otaczających komponentów.

 2
Author: Bill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Nie AFAIK, przynajmniej nie ze standardowymi widgetami swing.

W VB masz widżet grupy, który jest w zasadzie panelem + obramowaniem.

W Swing masz JPanel, który jest widżetem kontenera, i tworzysz i ustawiasz na nim obiekt obramowania tylko wtedy, gdy go potrzebujesz. Można argumentować, że w sposób bardziej elegancki, ponieważ nie płacisz za coś, czego nie używasz (np. border)

 1
Author: Uri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-10 20:22:28

Jak wspomniał David Koelle o konfigurowaniu border za pomocą kodu java, podobny wynik można również osiągnąć w trybie designer.

Tutaj wpisz opis obrazka

 1
Author: Gaurang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-26 09:13:55

Odpowiadam na podstawie komentarza Uri, który wyjaśnia co OP miał na myśli Group Box:

Uri: myślę, że ma na myśli grupę kontrolną, którą widzisz w wielu oknach dialogowych, gdzie masz kwadrat wokół kilku widżetów, takich jak przyciski radiowe, na przykład.

Z tego, co wiem, Każdy JComponent może ustawić obramowanie dla siebie, więc nie potrzebujesz drugiego panelu.

 -1
Author: Geo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-10 09:07:24