Kontynuujemy pisanie o bibliotece "Swing" języka Java. Aby w ogóle robić coś porządnego, trzeba najpierw poznać podstawowe komponenty "Swing". Jeśli zainteresowałem Cię tym tematem mającym za sobą ponad 20 lat, przechodzimy od razu do konkretów. To będzie na razie sama lista z wyjaśnieniami co do czego służy i jak prezentuje się w oknie.
JAKIE WYSTĘPUJĄ KOMPONENTY "SWING"?
Przedstawiam Ci zbiór informacji na temat każdego komponentu jaki uważam za podstawowy:
JLABEL
Zwykły tekst. Przeciążone konstruktory pozwalają między innymi na podanie samego tekstu, jak również możliwość dodania stałego aliasu oznaczającego wyrównanie (od lewej, na środku, od prawej). Dla przykładu taka postać:
new JLabel("Jestem tekstem!", SwingConstants.CENTER);
spowoduje wypisanie tekstu na środku okna:
![]() |
Komponent "JLabel" w bibliotece "Swing".
JBUTTON
Programowalny przycisk do którego podpinamy zdarzenie w postaci metody pełniącej rolę wywołania zwrotnego ("callback"). W celu dodania zdarzenia do przycisku "Swing", należy albo dorzucić klasę wewnętrzną i do niej zaimplementować interfejs "ActionListener", albo skorzystać z tak zwanego "wyrażenia lambda". Sam przycisk niewykonujący żadnych czynności, wymaga jedynie użycia konstruktora, a zamiast tekstu możemy też dać ikonkę. Oto prosty przykład konstruktora z łańcuchem znaków:
new JButton("Kliknij mnie!");
Wówczas po dodaniu go do ramki, zobaczymy przycisk w całej okazałości:
![]() |
Komponent "JButton" w bibliotece "Swing".
Miej jednak na uwadze, iż przycisk może przybierać różne rozmiary w zależności od pola obszaru do którego się go "przykleiło" wykorzystując domyślny układ o nazwie "BorderLayout". Komponenty "Swing" dysponują kilkoma różnymi układami, a pierwszy z nich jest opisywany w podanym odnośniku.
JTEXTFIELD
Pole tekstowe, do którego możemy wstawić dowolną treść przy pomocy klawiatury. Dzięki dodaniu interfejsu "ActionEvent" można programować zachowanie innych komponentów w zależności od aktualnie przechowywanego tekstu. Na przykład można sprawić, że przycisk będzie zablokowany jeżeli pole tekstowe jest puste. Oto jeden z wariantów konstruktora, do którego wprowadzamy tekst i szerokość pola w znakach:
new JTextField("Tu wpisz swój tekst...", 22);
A tak prezentuje się pole tekstowe:
![]() |
Komponent "JTextField" w bibliotece "Swing".
JTEXTAREA
"JTextArea" także jest polem tekstowym, jednak w odróżnieniu od "JTextField", tutaj możemy wstawić wiele wierszy tekstu do jednego pola. Pierwszy parametr odpowiada za łańcuch znaków jaki zostanie do niego umieszczony po uruchomieniu aplikacji, a dwa kolejne (opcjonalne) odpowiadają za wiersze i kolumny. Dodanie tylko pierwszego z nich sprawi, że pole tekstowe zacznie się "rozciągać" zgodnie z zawartością w środku:
new JTextArea("Tu wpisz swój tekst...\n\n...a tu go dokończ.");
W oknie wygląda to następująco:
![]() |
Komponent "JTextArea" w bibliotece "Swing".
JCHECKBOX
Oprócz "tekstowych" spraw, na komponenty "Swing" sprowadza się jeszcze przełącznik, czyli ten "ptaszek" jak go nazwałem. Chodzi o przełączanie na "prawdę" lub "fałsz". Dzięki temu możemy kontrolować włączanie oraz wyłączanie i za pomocą interfejsu programować następstwa z tym związane uzależnione od wartości. Przykładowy konstruktor ukazuje tworzenie ptaszka dodając do niego tekst i domyślną wartość (włączone czy wyłączone):
new JCheckBox("Coś jest włączone", true);
Po dodaniu do ramki możemy ujrzeć "ptaszek" wyglądający tak:
![]() |
Komponent "JCheckbox" w bibliotece "Swing".
JSLIDER
Kolejny komponent z tych podstawowych w "Swing" to "slider" czyli "suwak" po polsku. Możliwość kontroli wartości liczbowej "jeżdżąc" paskiem od lewej do prawej. Jedna z możliwych metod utworzenia to podanie minimalnej wartości, maksymalnej wartości i wartości początkowej:
new JSlider(0, 100, 50);
W efekcie czego mamy taki oto suwaczek, czyli tytułowy "slider":
![]() |
Komponent "JSlider" w bibliotece "Swing".
Uprzedzając pytanie: sam suwak nie zapewnia "licznika" aktualnej wartości. Należy dołożyć osobno "JLabel" i za pomocą "listenera", aktualizować tekst co każde "przesunięcie".
JLIST
Komponenty w "Swing" to także definiowanie list z pozycjami do wyboru. Do tego służy "JList", które wymaga dodatkowego elementu: "DefaultListModel". Sięgamy po nie i do niego dodajemy pozycje, jakie się mają znaleźć na liście:
DefaultListModel<String> defaultListModel = new DefaultListModel<>();
defaultListModel.addElement("JLabel");
defaultListModel.addElement("JButton");
defaultListModel.addElement("JTextField");
defaultListModel.addElement("JTextArea");
defaultListModel.addElement("JCheckbox");
defaultListModel.addElement("JSlider");
defaultListModel.addElement("JList");
Dopiero wtedy, mając tak przygotowaną listę, wprowadzamy ją jako parametr do instancji "JList":
new JList<>(defaultListModel);
Powyższe operacje spowodują ukazanie się oto takiej listy ze wszystkimi wypisywanymi elementami:
![]() |
Komponent "JList" w bibliotece "Swing".
Styknie na tę chwilę o tym, jakie występują podstawowe komponenty w "Swing". Musisz jeszcze wiedzieć w jaki sposób rozumieć umieszczanie komponentów na układzie "BorderLayout", a przed tym jeszcze jak programować komponent, aby "odbierał" zdarzenia i na tym skoncentrowałem się w innym artykule!