Laboratorium z informatyki sem. II/ćw. 10 Wydział Transportu PW - 2020/21
Materiały do użytku wewnętrznego strona 1
MATERIAŁYPOMOCNICZEDOĆWICZENIA 10
Klasa JSlider pakietu Swing
Komponent Slider (klasy JSlider) umożliwia wybór żądanej wartości z danego zakresu za pomocą przesuwania suwaka
Najważniejsze właściwości komponentu:
• border - pozwala na wybór odpowiedniego typu suwaka (np. TitleBorder wyświetla suwak z tytułem określonym właściwością Title, w położeniu określonym właściwością
Position
• minimum, maximum, value - określają kolejno wartość minimalną, maksymalną i bieżącą suwaka
• orientation – określa wygląd komponentu; przyjmuje wartości VERTICAL lub HORIZONTAL
Najważniejsze metody komponentu:
• setMajorTickSpacing(int n) - ustawia znaczniki głównej podziałki
• setPaintTicks(boolean b) - określa, czy znaczniki podziałki mają być wyświetlane (true), czy nie (false) .
• setPaintLabels(boolean b) - określa, czy wartości numeryczne znaczników podziałki mają być wyświetlane
( true), czy nie (false)
• getValue() – podaje bieżącą wartość suwaka (typu int),
• setValue(int n) – ustawia bieżącą wartość suwaka
Przy zmianie położenia suwaka zachodzi zdarzenie stateChanged, które oprogramowaliśmy w naszej aplikacji.
Klasa JSpinner pakietu Swing
Komponent Spinner (klasy JSpinner) jest przewijalnym polem, w którym w każdej chwili widoczna jest tylko jedna wartość, zmieniana za pomocą przycisków ze strzałkami lub klawiszami kursorów
up/down.
Możliwe jest też wpisywanie wartości z klawiatury
Sekwencja wartości dostarczanych przez komponent jest zależna od jego właściwości SpinnerModel:
➢ SpinnerListModel
–
wyświetla listę lub tablicę,
➢ SpinnerNumberModel
–
wyświetla liczby(intlubdouble),
➢ SpinnerDateModel
–
wyświetla daty.
W przypadku modelu SpinnerNumberModel dolna i górna wartość są określone przez Minimum i Maximum (null oznacza brak ograniczeń
zakresu liczb). Krok zmian wartości jest określony za pomocą StepSize, wyznacza on wartość następną (nextValue) i poprzednią
(previousValue).
Najważniejsze metody komponentu:
• getValue() – podaje aktualną wartość wyświetlaną w polu (klasy Object),
• setValue(Object value) – ustawia aktualną wartość wyświetlaną w polu.
Klasa JTable
Komponent klasy JTable umożliwia wyświetlanie i edycję dwuwymiarowej tabeli o określonej liczbie wierszy i kolumn. Wyświetlana tabela jest automatycznie umieszczana w komponencie klasy JScrollPane.
W komórkach tabeli mogą być umieszczane elementy ogólnego typu Object.
Kolejne wiersze i kolumny tabeli są numerowane od 0.
Najważniejsze metody komponentu:
• getValueAt (int row, int column)
–
zwraca wartość(klasyObject)zapisaną w komórce określonej przez numer wiersza i kolumny• setValueAt(Object aValue, int row, int column) – zapisuje aValue w komórce tabeli położonej w danym wierszu i kolumnie
• getRowCount() – zwraca liczbę wierszy tabeli
• getColumnCount() – zwraca liczbę kolumn tabeli
Laboratorium z informatyki sem. II/ćw. 10 Wydział Transportu PW - 2020/21
Materiały do użytku wewnętrznego strona 2
Klasa JScrollPane pakietu Swing
Kontener klasy JScrollPane udostępnia przewijalne okno, w którym można umieścić komponent wymagający przewijania do wyświetlenia zawartości (np. wielowierszowe pole tekstowe, tablica). Komponent może posiadać poziomy lub pionowy pasek przewijania oraz paski tytułowe kolumn i wierszy.
Menu
Aby utworzyć menu należy umieścić w ramce pasek menu - obiekt klasy JMenuBar, w nim obiekty klasy JMenu, stanowiące menu najwyższego poziomu, do których można dodawać kolejne elementy klasy JMenuItem– polecenia lub separatory. Tytuł polecenia określa jego właściwość text. Do elementów menu można dodawać ikony, mnemoniki i klawisze skrótu. Dostępność elementu menu jest określona przez jego właściwość enabled (typu boolean). Kliknięcie pozycji menu powoduje wygenerowanie zdarzenia ActionEvent.Klasa FileDialog
Klasa FileDialog służy do wyświetlania modalnego okna dialogowego, za pomocą którego można dokonać wyboru pliku do zapisu lub odczytu. Klasa udostępnia dwie stałe całkowite, umożliwiające rozróżnienie dialogu:
• int LOAD – wartość oznaczająca wybór pliku do odczytu
• int SAVE – wartość oznaczająca wybór pliku do zapisu Konstruktor klasy ma postać:
• FileDialog(Frame f, String s, int m) – wyświetla na ramce f dialog o tytule s, parametr m oznacza wartość stałej LOAD lub SAVE
Podstawowe metody dialogu:
• getDirectory() – łańcuch zawierający wybrany folder (lub null gdy brak wyboru)
• getFile() – nazwa pliku wybranego w dialogu (lub null gdy dialog zakończono przyciskiem CANCEL)
Zapis danych do pliku, klasa FileWriter
Metody klasy FileWriter umożliwiają zapisanie danych do pliku tekstowego. Najprostszy konstruktor ma postać:
• FileWriter(String nazwa)
– tworzy obiekt odpowiadający plikowi o podanej nazwie Możliwe jest dopisywanie danych do istniejącego pliku za pomocą konstruktora:
• FileWriter(String nazwa, boolean append)
– tworzy nowy obiekt odpowiadający plikowi o podanej nazwie; jeśli plik już istnieje i parametr append ma wartość true, to dane będą dopisywane na końcu pliku
Metody wykorzystane do zapisu danych w pliku:
• write(String s) – zapisuje łańcuch s w strumieniu wyjściowym
• close()– zamyka strumień
Wszystkie metody klasyFileWritermogą generować wyjątki klasyIOException
,
muszą więc być wywoływane w blokutry … catch
,
w którym zostanie przechwycony wyjątek.Aby odpowiednio zmienić rozmieszczenie znaków w tekstach zapisywanych do pliku, można wykorzystać sekwencje znaków specjalnych, które umożliwiają wstawienie znaku nowej linii, nowej strony, tabulacji itp. W programie wykorzystaliśmy sekwencję ”\r\n” reprezentującą powrót karetki i znak nowego wiersza.
Rzutowanie typów
Przekształcanie typów danych umożliwia tzw rzutowanie typów. Wykonuje się je umieszczając nowy typ w nawiasach przed danymi, które chcemy rzutować. W treści metody actionPerformed dla menu Suma wiersza
zastosowaliśmy instrukcję:
int i = (Integer) jSpinner1.getValue();
Umożliwia ona uzyskanie wartości typu int na podstawie wartości wybranej w SpinEdit (klasy Object)
Dostęp do składowych klasy
Składowe danej klasy, czyli jej pola i metody, są domyślnie dostępne w pakiecie, w którym znajduje się klasa.
Do zmiany dostępu stosuje się słowa kluczowe Javy (tzw. modyfikatory dostępu): public, private, protected. Modyfikator dostępu umieszcza się na początku deklaracji pola lub metody. Znaczenie modyfikatorów jest następujące:
public – dostęp dla wszystkich klas bez ograniczeń
protected – dostęp w danej klasie, w jej klasach potomnych i w innych klasach pakietu
private – dostęp tylko w klasie, w której są zdefiniowane
Generowanie liczb losowych, klasa Random
Oprócz metody random() klasy Math do generowania liczb losowych całkowitych lub rzeczywistych można wykorzystać metody klasy Random z pakietu java.util. Aby w programie generować liczby losowe, należy zadeklarować i utworzyć obiekt klasy Random:
Random r = new Random(); // klasę Random należy zaimportować Do generowania kolejnych wartości losowych służą metody:
• nextInt(int n)
– zwraca całkowitą liczbę losową o rozkładzie równomiernym z przedziału <0
,n
)• nextDouble()
– zwraca liczbę losową rzeczywistą o rozkładzie równomiernym w przedziale <0,
1),
Liczby losowe całkowite z przedziału domkniętego <K, L> można uzyskać stosując wzór:K +r.nextInt( L + 1 - K )
Liczby losowe rzeczywiste z przedziału (A, B) można uzyskać stosując wzór
A +( B - A ) * r. nextDouble()