• Nie Znaleziono Wyników

Aplikacja wykorzystująca pakiet Swing

N/A
N/A
Protected

Academic year: 2021

Share "Aplikacja wykorzystująca pakiet Swing "

Copied!
2
0
0

Pełen tekst

(1)

Laboratorium z informatyki sem. II/ćw9 Wydział Transportu PW – 2020/21

Materiały do użytku wewnętrznego strona 1

MATERIAŁYPOMOCNICZEDOĆWICZENIA 9

Aplikacja wykorzystująca pakiet Swing

Pakiet Swing, będący częścią biblioteki Java Foundation Classes, umożliwia tworzenie w języku Java

interaktywnych interfejsów graficznych, pozwalających na wprowadzanie danych za pomocą myszki, klawiatury i innych urządzeń tego typu. Wszystkie składniki tego pakietu zostały całkowicie zaimplementowane w języku Java, co zapewnia zgodność i niezależność wyglądu poszczególnych składników pakietu na różnych platformach.

Pierwszym etapem tworzenia aplikacji z wykorzystaniem pakietu Swing jest utworzenie klasy, która będzie

reprezentowała graficzny interfejs użytkownika. Obiekt tej klasy stanowi kontener przechowujący poszczególne składniki interfejsu.

Klasa JFrame

W większości aplikacji takim głównym obiektem interfejsu jest albo okno proste (obiekt klasy JWindow), albo ramka (obiekt klasy JFrame), czyli okna z paskiem tytułu oraz z przyciskami Minimalizuj, Maksymalizuj , Zamknij. Jednym ze sposobów utworzenia graficznego interfejsu użytkownika wykorzystującego pakiet Swing jest zdefiniowanie go jako podklasy klasy JFrame, tak jak to zrobiliśmy w naszym ćwiczeniu.

Komponenty biblioteki Swing

Pakiet javax.swing zawiera zestaw klas, służących do tworzenia graficznego interfejsu użytkownika, nazywanego w skrócie GUI (Graphical User Interface). Poszczególne składniki pakietu Swing (między innymi takie jak przyciski, listy, etykiety czy pola wyboru) mają jedną wspólną klasę bazową javax.swing.JComponent. W klasie tej są

zdefiniowane właściwości wspólne dla wszystkich komponentów oraz metody używane m.in. do pobierania (get) i nadawania (set) tych właściwości. Jedną z właściwości wspólnych dla różnych klas komponentów jest text, czyli napis widoczny na komponencie. Do określania treści tego napisu oraz do jego pobierania służą odpowiednio metody setText()

oraz getText().

Składniki pakietu Swing mogą reagować na określonego typu zdarzenia; najprostszym przykładem zdarzenia jest kliknięcie myszką przycisku.

W ćwiczeniu umieszczamy na kontenerze klasy JFrame komponenty następujących klas pakietu Swing:

• JButton - przyciski są jednym z najczęściej używanych elementów graficznego interfejsu użytkownika. Zwykle mają napisy lub ikony, a ich podstawową funkcją jest reagowanie na akcję użytkownika.

• JLabel - klasa JLabel służy do tworzenia etykiet umożliwiających wyświetlanie tekstu, ikony, lub obydwu tych elementów naraz w jednym wierszu. Etykiety są wykorzystywane do opisywania innych komponentów.

• JTextField -: obiekty klasy JTextField stanowią pola tekstowe, które umożliwiają wyświetlanie, wpisywanie i modyfikowanie tekstu, którego rozmiar jest ograniczony do jednego wiersza.

• JTextArea - klasa JTextArea umożliwia wyświetlanie i (opcjonalnie) edycję wielowierszowego tekstu.

Cały tekst zawarty w polu wyświetlany jest ustaloną czcionką i jednolitym stylem. W aplikacji zastosowaliśmy komponent do wyświetlenia historii obliczeń.

• JComboBox - klasa ta umożliwia tworzenie list rozwijalnych z możliwością edycji. Klasa JComboBox posiada między innymi następujące metody:

getItemCount() - zwraca ilość elementów na liście

getSelectedIndex () - zwraca pozycję na liście aktualnie zaznaczonego elementu (elementy są numerowane od 0); jeśli żaden element nie jest zaznaczony, to metoda zwraca -1.

setSelectedIndex(i) – zaznacza element listy znajdujący się na pozycji wskazanej przez parametr i

getSelectedItem() - zwraca element aktualnie zaznaczony na liście (klasy Object)

Gdy dokonujemy wyboru elementu komponentuJComboBox, zachodzi zdarzenie itemStateChanged. Elementy listy JComboBox są klasy Object, aby wykorzystać je jako napisy lub liczby, trzeba wykonać konwersję, np.

dla napisu : String s = (String)(jComboBox1.getSelectedItem());

dla liczby całkowitej: int i =Integer.parseInt((String)(jComboBox1.getSelectedItem()));

dla liczby rzeczywistej: double x =Double.parseDouble((String)(jComboBox1.getSelectedItem()));

Uwaga: W środowisku NetBeans podczas wstawiania dowolnego składnika na ramkę z palety komponentów, w metodzie initComponents() jest automatycznie generowany kod, który dodaje dany składnik do aplikacji, wywołuje jego konstruktor oraz metody nadające mu odpowiednie właściwości. Aby zobaczyć treść tej metody, należy kliknąć ikonę ze znakiem + obok wiersza z napisem „Generated Code”. Metoda initComponents() musi być wywołana w konstruktorze ramki jako pierwsza.

Konwersja tekstu na liczby rzeczywiste

Do przekształcania tekstów w liczby rzeczywiste stosuje się statyczną metodę parseDouble()klasy Double, np:

String t = "125.5";

double a = Double.parseDouble(t);

Przy przekształcaniu tekstu w liczbę może pojawić się błąd i metoda tworzy wtedy wyjątek klasy

NumberFormatException, dlatego należy ją wywoływać w bloku try ... catch

(2)

Laboratorium z informatyki sem. II/ćw9 Wydział Transportu PW – 2020/21

Materiały do użytku wewnętrznego strona 2

Instrukcja wyboru switch

Instrukcja switch umożliwia wybór i wykonanie jednej z kilku zawartych w niej instrukcji, zależnie od wartości wyrażenia. Instrukcja switch ma postać:

switch (wyrażenie) { case wartość1 : Instrukcja1; break;

case wartość2 : Instrukcja2; break;

...

default Instrukcja;

}

Wyrażenie sterujące wyborem musi być typu całkowitego. Jeśli ma ono jedną z wymienionych w case wartości, to wykonywana jest odpowiednia instrukcja. Jeżeli nie zostanie odnaleziona żadna klauzula case odpowiadająca wartości wyrażenia, wówczas wykonywane są instrukcje zawarte w klauzuli default, która jest opcjonalna i może być pominięta.

Na końcu każdej klauzuli case należy umieścić polecenie break, które przerwie wykonywanie bloku switch.

Obsługa wyjątków w Javie – programowe generowanie wyjątków

Błąd, który powstaje podczas wykonywania programu, powoduje utworzenie wyjątku. Wyjątek jest obiektem klasy Exception, która jest pochodną klasy Throwable. Aby uzyskać informację o wyjątku, można wykorzystać jedną z metod tej klasy:

getMessage () - podaje komunikat związany z wyjątkiem,

toString() - podaje komunikat związany z wyjątkiem i dodatkowo nazwę klasy wyjątku.

Metody klas Javy, w których wykonaniu mogą wystąpić błędy czyli wyjątki, powinny obsługiwać je w swojej treści lub wyrzucać je na zewnątrz (ang. throw); wówczas za obsługę błędu jest odpowiedzialna metoda wywołująca.

Możliwe jest programowe generowanie wyjątków za pomocą instrukcji throw. W programie zastosowaliśmy instrukcję:

if (liczba2 == 0) { throw new ArithmeticException("Dzielenie przez zero!!!"); }

Utworzyliśmy tu obiekt klasy ArithmeticException i zgłosiliśmy wystąpienie wyjątku. Parametr konstruktora jest typu

String i określa komunikat związany z tym wyjątkiem. Komunikat ten został następnie uzyskany za pomocą metody

getMessage() i wykorzystany w instrukcji obsługującej wyjątek.

Formatowanie liczb dziesiętnych

Do formatowania tekstowej reprezentacji liczb w Javie można wykorzystać klasę NumberFormat zawierającą wzorce i metody formatowania wartości liczbowych, walutowych i dat. Dla liczb rzeczywistych można określić ilość miejsc dziesiętnych za pomocą obiektu klasy DecimalFormat i metody format(). Parametrem konstruktora klasy

DecimalFormat może być wzorzec zawierający symbole, które opisują format tekstowego zapisu liczby dziesiętnej.

Są to między innymi:

0 – cyfra

# - cyfra z pominięciem nieznaczących zer . – separator dziesiętny

Aby sformatować wartość zmiennej rzeczywistej wynik z trzema cyframi dziesiętnymi zastosowaliśmy instrukcje:

NumberFormat f = new DecimalFormat(”0.###”);

jTextField3.setText(f.format(wynik));

Okna typu Message Dialog

Zadaniem tego okna jest wyświetlenie informacji na ekranie. Okno to tworzymy poprzez wywołanie jednej z metod

showMessageDialog(Component, Object);

showMessageDialog(Component, Object, String, int);

gdzie poszczególne parametry mają następujące znaczenie:

Component jest komponentem nadrzędnym dla wyświetlanego okna,

Object jest łańcuchem tekstowym , komponentem albo ikoną wyświetlaną w powstałym oknie

String jest łańcuchem tekstowym wyświetlanym w pasku tytułowym okna

int jest jedną z pięciu zmiennych klasy określającą rodzaj okna :

ERROR_MESSAGE,INFORMATION_MESSAGE, PLAIN_MESSAGE, QUESTION_MESSAGE, WARNING_MESSAGE

Metoda wykorzystuje 4 standardowe ikony zależnie od typu komunikatu:

ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE

Przykład:

JOptionPane.showMessageDialog(this,

"Błędnie podano wartość liczbową argumentu!", "Niepoprawne dane",0);

Cytaty

Powiązane dokumenty

Etap projektowania: należy zmodyfikować diagramy sekwencji, wstawiając linie życia kolekcji wszędzie tam, gdzie zachodzi potrzeba wykonanie metody dla wielu obiektów, a

· Zdefiniowanie klasy dziedziczącej po klasie JFrame z pakietu Swing (lub JWindow) public class Prosta_Aplikacja2 extends JFrame}. {

Zamykanie okna aplikacji za pomocą bezpośredniej obsługi zdarzenia zamykania okna (zamiast wykorzystania metody

Kiedy dana klasa implementuje interfejs, musi ona obsługiwać zdarzenia za pomocą metody, która jest wtedy wywoływana automatycznie, natomiast w programie trzeba ją

W sportach motorowych bardzo ważna jest świadomość kierowcy dotycząca aktualnych parametrów pracy pojazdu wyścigowego.. Odgrywa to również istotną rolę w

Następnie przez rok pracował jako wikariusz w rodzinnych Bielinach, po czym powrócił do sandomierskiego seminarium w roli wykładowcy, a ostatecznie został jego

Pewnie nie będzie dużym ryzykiem wyciągnięcie z poezji Maja, a zwłaszcza Polkowskiego, wniosku, że współzależność motywu miłości i śmierci osiąga u tych

Ta le k tu ra dróg żyw otu ducha w różnych w cieleniach była pom yślana jako katecheza, nauczanie zm ierzające do zrozum ienia i na­.