• Nie Znaleziono Wyników

I. Operacje na tabeli 1.

N/A
N/A
Protected

Academic year: 2021

Share "I. Operacje na tabeli 1."

Copied!
4
0
0

Pełen tekst

(1)

Laboratorium z informatyki sem. II/ POWTÓRZENIE Wydział Transportu PW - 2020/21

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

POWTÓRZENIE MATERIAŁU Z ĆWICZEŃ

8 - 12 PRZYKŁADY ZADAŃ NA KOLOKWIUM 2 I. Operacje na tabeli

1. Utwórz aplikację Swing, wyświetlającą tabelę o 8 wierszach i 5 kolumnach, której elementami są całkowite liczby losowe z przedziału [-10, 10].

Kliknięcie przycisku powoduje wylosowanie elementów tabeli oraz obliczenie liczby elementów dodatnich, ujemnych i zerowych, wyświetlenie obliczonych wartości i przedstawienie ich na wykresie kołowym, utworzonym metodami klasy

Graphics

.

Wskazówki:

Projektowanie interfejsu graficznego

: utwórz projekt z klasa główną

JFrame,

umieść na ramce tabelę, przycisk, 3 etykiety, 3 pola tekstowe i odpowiednio określ ich właściwości w tym położenie zgodnie z rysunkiem.

W lewym dolnym rogu ramki będziemy tworzyć wykres kołowy.

Operacje na tabeli

: w klasie głównej zadeklaruj zmienne

ld, lu, lz

,

oznaczające liczbę elementów dodatnich, ujemnych i zerowych tabeli. Utwórz metodę akcji przycisku, w której losuj i wyświetlaj wartości elementów tabeli (por. ćw. 9.II) oraz zliczaj elementy dodatnie, ujemne i zerowe (por. ćw. 4.III). Wyświetl wartości

ld, lu, lz

w polach tekstowych

.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

Random r = new Random(); //generator liczb losowych

//zakres losowania <-10, 10>

int x = 0; //zmienna pomocnicza ld = 0; lu = 0; lz = 0;

for (int i = 0; i < 8; i++) { for (int j = 0; j < 5; j++) { x = -10 + r.nextInt(21);

jTable1.setValueAt(x, i, j);

if (x > 0) { ld++; }

//samodzielnie dodaj instrukcje obliczające liczbę elementów zerowych i ujemnych } }

//samodzielnie wyświetl wyniki w polach tekstowych }

Wykres kołowy

:

W klasie głównej utwórz metodę

paint(),

w której za pomocą metod

setColor() i fillArc()

rysuj 3 kolorowe wycinki koła o kątach środkowych odpowiadających wartościom

ld, lu, lz

(obliczając te kąty skorzystaj z informacji, że w tabeli jest wygenerowanych 40 wartości, a więc liczbie 40 odpowiada kąt 360. Stąd np. liczbie ld odpowiada kąt 0

360*ld /40

.

W metodzie jButton1ActionPerformed (akcji przycisku) wywołaj metodę

repaint(),

aktualizującą wykres po wylosowaniu nowych elementów do tabeli.

W efekcie końcowym metoda paint() powinna wyglądać następująco:

public void paint (Graphics g) { super.paint(g);

g.setColor(Color.WHITE);

g.translate(10, getHeight()-160); //przesunięcie grafiki o zadany wektor

//(punkt (0,0) kontekstu graficznego g, znajduje się w punkcie(10,getHeight()-160) g.fillRect(0, 0, 150, 150);// tło

g.setColor(Color.BLUE);

int a1 = (360*ld /40);// kąt pierwszego wycinka w stopniach g.fillArc(0, 0, 150, 150, 0, a1);

g.setColor(Color.red);

int a2 = (360*lu /40 );// kąt drugiego wycinka w stopniach g.fillArc(0, 0, 150,150, a1, a2);

g.setColor(Color.pink);

int a3 = (360*lz /40 );// kąt trzeciego wycinka w stopniach g.fillArc(0, 0, 150, 150, a1+a2, a3); }

(2)

Laboratorium z informatyki sem. II/ POWTÓRZENIE Wydział Transportu PW - 2020/21

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

II. Grafika z animacją, interfejs myszy Z

ADANIA

1. Utwórz aplikację, która co 0,6 s wyświetla w losowych miejscach okna ramki Twoje imię. Wybierz dowolną czcionkę oraz kolory tła i napisu.

2. Utwórz aplikację Swing i ustal rozmiar ramki na 300 × 300.

Po naciśnięciu przycisku myszy wyświetlaj na ramce w lewym górnym rogu słowo „LEWY” lub w prawym dolnym rogu słowo „PRAWY” lub po środku ramki słowo ”ŚRODKOWY”, zależnie od użytego przycisku. Tło okna ramki ma być szare, kolor napisu – losowy, a czcionka - MONOSPACED 20 pt.

3. Utwórz aplikację Swing i ustal rozmiar ramki na 300 × 300. Na środku ramki narysuj koło o początkowej średnicy 50 pikseli Każde naciśnięcie klawisza Enter zwiększa średnicę kuli o 5 pikseli, ale do wartości nie większej niż wysokości ramki. Każde naciśnięciu klawisza spacji zmniejsza średnicę o 5 pikseli, ale do wartości nie mniejszej niż 10. Kliknięcie klawisza Shift przywraca początkowy rozmiar średnicy koła.

Wskazówki do zadania 1

1. W środowisku NetBeans utwórz aplikację typu Swing z klasą główną o nazwie Zadanie1. W metodzie konstruktora tej klasy określ dowolny rozmiar okna i kolor tła.

2. W klasie Zadanie1 utwórz metodę paint ().

3. Pod nagłówkiem klasy zadeklaruj zmienną przechowującą napis, zmienną przechowującą czcionkę , zmienną do generowania liczb losowych oraz dwie zmienne całkowite x i y, określające współrzędne położenia napisu na ramce :

String s = "Aleksander";

Font f = new Font(Font.SANS_SERIF, Font.BOLD, 20);

Random r = new Random();

int x=20, y=30;

4. W metodzie paint narysuj tło, a następnie losowym kolorem namaluj tekst s czcionką f, począwszy od punktu (x, y):

g.clearRect(0, 0, getWidth(), getHeight());

g.setFont(f);

Color kolor = new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256));

g.setColor(kolor);

g.drawString(s, x, y);

5. Uruchom aplikację.

6. W metodzie paint () wpisz instrukcje, które losują położenie tekstu. Aby cały napis był zawsze widoczny na ramce, uwzględniamy jego szerokość i wysokość w danej czcionce f, oraz dodatkowo uwzględniamy pasek tytułu ramki(30 pikseli, i szerokość krawędzi ramki-10 pikseli):

x = r.nextInt(getWidth() - g.getFontMetrics().stringWidth(s));

y = 30+f.getSize() + r.nextInt (getHeight() – 2*f.getSize()-30);

7. W klasie głównej zaimplementuj interfejs ActionListener, a następnie utwórz obiekt t klasy Timer generujący zdarzenia co 0,6 sekundy.

8. W metodzie actionPerformed() tego interfejsu napisz instrukcję odświeżają grafikę:

repaint();

9. W konstruktorze klasy dodaj instrukcję rozpoczynającą działanie zegara :

t.start();

10. Uruchom aplikację, obserwując losowe położenie tekstu.

(3)

Laboratorium z informatyki sem. II/ POWTÓRZENIE Wydział Transportu PW - 2020/21

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

Wskazówki do zadania 2

1. W środowisku NetBeans utwórz aplikację z klasę główną typu JFrame.

2. Wykonaj punkt 2 z poprzedniego zadania.

3. W klasie głównej zadeklaruj zmienne

String s = ""; // napis

int x=0, y=30; / /położenie napisu

Font f=new Font("MONOSPACED", Font.PLAIN, 20);

4. W metodzie paint () narysuj tło, a następnie namaluj tekst s czcionką f, począwszy od punktu (x, y) 5. W klasie głównej zaimplementuj interfejs MouseListener i odpowiednie jego metody

6. W konstruktorze klasy głównej dodaj nasłuch na interfejs MouseListener instrukcją:

addMouseListener(this);

7. Uzupełnij metodę mousePressed( ) o instrukcje warunkową , sprawdzającą, czy został kliknięty lewy, prawy czy środkowy przycisk myszy;

8. W metodzie paint() w zależności od klikniętego przycisku myszy , przypisz zmiennej s tekst "LEWY" , "PRAWY"

lub „ŚRODKOWY" oraz ustaw odpowiednie wartości zmiennych x i y –odpowiedzialnych za położenie tekstu.

Uwaga: przypisując wartość zmiennej y, pamiętaj, by tekst "LEWY" wyświetlony był poniżej paska tytułu ramki, a tekst "PRAWY” powyżej dolnej krawędzi okna. Tekst „ŚRODKOWY” należy wyśrodkować w poziomie i wpionie

9. Odświeżaj grafikę na ramce po każdym kliknięciu myszy. W tym celu na końcu metody mousePressed( ) dodaj instrukcję repaint();

10. W metodzie paint () dodaj instrukcję warunkową, która namaluje teksts w odpowiednim miejscu, w zależności od tego , który przycisk został kliknięty

11. Uruchom aplikację i sprawdź działanie przycisków myszy.

Wskazówki do zadania 3

1. W środowisku NetBeans utwórz aplikację typu Swing z klasą główną o nazwie Zadanie3. W metodzie konstruktora tej klasy określ rozmiar okna i kolor tła.

2. Pod nagłówkiem klasy zadeklaruj średnicę kuli czyli zmienną całkowitą o nazwie d i wartości początkowej 50 oraz zmienną do generowania liczb losowych

3. W klasie Zadanie3 utwórz metodę paint ()

4.

W metodzie paint narysuj na środku ramki wypełnione koło o średnicy d o dowolnym kolorze.

5.

Dodaj do ramki interfejs KeyListener uzupełniając nagłówek o klauzulę

implements KeyListener, a następnie zaimplementuje wszystkie metody abstrakcyjne tego interfejsu

6.

W metodzie konstruktora klasy głównej dodajemy instrukcje :

addKeyListener(this);

setFocusable(true);

7.

W metodzie keyPressed umieść instrukcję, która pobiera kod naciśniętego klawisza oraz odświeża grafikę:

int a = e.getKeyCode();

repaint();

8.

W metodzie keyPressed umieść dodatkowo instrukcję , która sprawdzi czy został naciśnięty klawisz Enter if (a == KeyEvent.VK_ENTER)

{ // tu umieść instrukcje , które zwiększają średnicę d o5 pikseli i sprawdzają

//czy średnica jest mniejsza niż szerokość/wysokość ramki pomniejszona o //wysokość paska tytułu

}

9.

W podobny sposób sprawdzaj czy został naciśnięty klawisz Spacji i Shif , wykonując wtedy instrukcje zgodne z treścią zadania

10. Uruchom aplikację i sprawdź działanie klawiszy Enter , spacji i Shift.

(4)

Laboratorium z informatyki sem. II/ POWTÓRZENIE Wydział Transportu PW - 2020/21

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

Zadania do samodzielnego wykonania

1. Utwórz aplikację z klasę główną typu JFrame ustal rozmiar okna ramki na 400 × 400.

Na ramce wyświetl kolejno:

• elipsę wpisaną w prostokąt o bokach 160 x 80,

• kółko o promieniu 50

• trójkąt, którego podstawą jest dolna krawędź okna a wysokość wynosi 50 Ustal dowolny kolor oraz położenie każdej figury.

Kliknięcie myszką przy wciśniętym klawiszu <Shift> czyści obszar graficzny ramki

2. Zmodyfikuj zadanie 1 tak, by promień koła zmieniał się co 0,5 s na wartość losową z przedziału <40, 60>

3. Zmodyfikuj zadanie 1 tak, by kolor trójkąta zmieniał się na losowy co 0,5s

4. Zmodyfikuj zadanie 1 tak by elipsa zmieniała swoje położenie na ramce na losowe , na każde naciśnięcie klawisza Enter.

5. Utwórz aplikację z klasę główną typu JFrame. Po naciśnięciu ramki myszką rysowane jest kółko o promieniu 20, którego środek znajduje się w punkcie wskazanym kursorem myszki. Równoczesne naciśnięcie klawisza Alt powoduje wyczyszczenie ramki . Kolor każdego kółka powinien być losowy.

6. (***)Utwórz aplikację z klasę główną typu JFrame, która umożliwia symulację ruchu koła o promieniu 5 poruszającego się wzdłuż kolejnych krawędzi okna ramki. Ruch rozpoczyna się po kliknięciu myszką na ramce.

Kliknięcie myszką przy wciśniętym klawiszu <Shift> kończy ruch i umieszcza kółko w położeniu początkowym w lewym górnym wierzchołku ramki.

Cytaty

Powiązane dokumenty

5. Zamawiający udostępnia SWZ na stronie internetowej i/lub platformie zakupowej od dnia publikacji ogłoszenia na stronie internetowej i/lub platformie zakupowej do

Jak daleko jednak w swoich interwencjach może posunąć się tłumacz, na ile wolno mu tekst oryginału dostosowywać do własnych przekonań i własnego punktu widzenia i na ile jest on

21.Podaj koncepcję programu wyjaśniającego metodę śledzenia promieni 22.Podaj koncepcję programu pokazującego różne sposoby cieniowania 23.Zaproponuj algorytm ukrywania

FAŁSZ W algorytmie z-bufora konieczne jest wstępne sortowanie wielokątów PRAWDA.. W celu przyśpieszenia rysowania okręgu wykorzystuje się własność

Wykonawca zobowiązany jest do okresowego wykonywania badań mikrobiologicznych urządzeń i sprzętu kuchennego oraz rąk personelu (min.2 osoby) na czystość

w sprawie szczegółowych warunków i trybu przyznawania pomocy finansowej w ramach poddziałania ,,Wsparcie na wdrażanie operacji w ramach strategii rozwoju lokalnego kierowanego

Karty pracy do scenariuszy 47..

8:55 – 9:40 Język polski Język angielski Technologia informacyjna Język polski Religia 9:50 – 10:35 Matematyka Język angielski Technologia informacyjna Język polski Język