Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TuT] Aplet java.


Rekomendowane odpowiedzi

Opublikowano

I. Wprowadzenie i pierwszy aplet.
Poradnik jest stworzony dla osób, której znają podstawy javy!
Witam, w moim pierwszym kursie/poradniku. Jak można zauważyć po tytule zajmiemy się programowaniem apletów (ang. Applet) w Javie. Zacznijmy od tego co to jest ten aplet. Odwołuję się tutaj do definicji z wikipedii:

Aplet – zwykle niewielki program napisany w taki sposób, by mógł zostać osadzony w stronie WWW wprost i wykonany przez przeglądarkę internetową na komputerze, na którym jest ona uruchomiona.



Skoro już mamy wszystko wyjaśnione zacznijmy pisać pierwszy program. Pierwsze co musimy zrobić to rozszerzyć klasę Applet i zaimportować "java.applet.Applet". Teraz trzeba dodać główną metodę naszej klasy, którą w przypadku apletów nie będzie "main()", tylko "init()" od słowa inicjalizacja. Metoda jest typu "void", ponieważ nie zwraca żadnej wartości. Wszystko powinno wyglądać tak:

 

import java.applet.Applet; //Importujemy klasę, z której będziemy korzystać.

public class Program extends Applet { //Tworzymy główną klasę i rozszerzamy ją o klasę Applet
       public void init(){ //Tworzymy główną metodę.
           
       }
}
 

 



Należy teraz stworzyć obiekt typu Applet, gdyż dzięki temu obiektowi będziemy mogli wykonywać operacje na naszym aplecie. Możemy zrobić to pisząc "Applet Nazwa_Obiektu". Aby móc się odwoływać do naszego obiektu, dobrze by było, żebyśmy postawili przed nim modyfikator "static". Zwróćcie uwagę na małe i wielkie litery!. Po wprowadzonych zmianach, kod powinien wyglądać tak:

 

import java.applet.Applet;

public class Program extends Applet {
    static Applet okno; //Tworzymy obiekt klasy Applet
       public void init(){
           
       }
}
 

 



Aplet już działa, ale oczekujemy od niego, czegoś więcej. Zacznijmy od metod, które na pewno wam się przydadzą przy tworzeniu programów. Pierwsza metoda to "setSize()", której parametrami są szerokość i wielkość okna apletu. Drugą metodą jest "setBackground()". Jako parametr przyjmuję nazwę koloru, którego nazwa musi być poprzedzona obiektem klasy Color, czyli np. "(Color.green)". Ostatnie co musimy zrobić to napisać linijkę "Nazwa_Obiektu = this". Dodajemy ją, żeby było wiadomo, że obiekt odpowiada za okno apletu(Łopatologiczne wytłumaczenie). Oczywiście wszystko piszemy w głównej metodzie. Teraz zobaczmy efekt naszej pracy:

 

import java.applet.Applet; //Importujemy klasę, z której będziemy korzystać.
import java.awt.Color; //Importujemy klasę Color, aby była możliwa zmiana tła

public class Program extends Applet { //Tworzymy główną klasę i rozszerzamy ją o klasę Applet
    static Applet okno; //Tworzymy obiekt klasy Applet
       public void init(){ //Tworzymy główną metodę.
           okno = this; //Obiekt Applet działa dla tego apletu
           okno.setSize(500, 500); //Ustawiamy rozmiar okna
           okno.setBackground(Color.green); //Ustawiamy kolor tła
       }
}
 

Dodatkowe, przydatne metody:

okno.destroy() //Niszczy aplet. Nie przyjmuje parametrów.
okno.start() //Uruchamia działanie apletu. Nie przyjmuje parametrów.
okno.stop() //Zatrzymuje działanie apletu. Nie przyjmuje parametrów.
okno.resize() //Zmienia rozmiary okna. Jako parametry przyjmuje szerokość i wysokość.
Więcej w dokumentacji java.

 



Teraz wszystko powinno działać jak należy. To tyle w pierwszej części kursu o apletach. Postaram się, aby następna część była nieco dłuższa. Możecie mi wytknąć teraz błędy i napisać co mógłbym dodać, żeby urozmaicić kurs :-)

Opublikowano

Super ale takie coś ci na stronce nie odpali ;)

I jeszcze nie masz dużo rzeczy które powinny się tam znajdować.

 

A jak chcesz już robić statyczny obiekt to poczytaj o singletonach. Bo później bd 10 pytań czemu są błędy xD

Opublikowano

II. Rysowanie i wyświetlanie obrazów.

Jak się pewnie domyślacie(lub nie), będziemy teraz używać znanej z biblioteki graficznej awt, funkcji paint. Służy ona do wyświetlania figur geometrycznych, ale także napisów i obrazów. Jako parametr przyjmuje obiekt klasy Graphics. Jak to bywa z klasami udostępnionymi przez twórców, trzeba je zaimportować. Możemy to zrobić importując pojedynczy komponent java.awt.Graphics; lub wszystkie komponenty biblioteki awt czyli import java.awt.*;. Wszystkie importy jak można było zauważyć w poprzednim rozdziale, poprzedzamy słowem import. Tak powinien wyglądać nasz kod po dodaniu funkcji paint:

 

import java.applet.Applet;
import java.awt.*;

public class Program extends Applet {
    static Applet okno;
       public void init(){
           okno = this;
           okno.setSize(500, 500);
           okno.setBackground(Color.green);
       }
       public void paint(Graphics g)
       {
           
       }
}
 

Przydałoby się, żeby ta funkcja coś robiła. Przedstawię teraz parę przydatnych metod dla tej funkcji. Jednak zanim to zrobię musicie wiedzieć, że jak przed nazwą figury jest słowo fill to oznacza, że figura będzie wypełniona, a jeśli słowo draw to w środku będzie przezroczysta (Czyli środek będzie tego samego koloru co tło). Narysujmy na ekranie owal, kwadrat i linie.

import java.applet.Applet;
import java.awt.*;

public class Program extends Applet {
    static Applet okno;
       public void init(){
           okno = this;
           okno.setSize(500, 500);
           okno.setBackground(Color.green);
       }
       public void paint(Graphics g)
       {
           g.fillOval(10, 10, 30, 30); //Rysowanie wypełnionego owalu.
           g.drawRect(70, 70, 50, 50); //Rysowanie pustego kwadratu.
           g.drawLine(150, 200, 400, 204); //Rysowanie linii. Parametry dla każdego wierzchołka
       }
}
 

Jak widać funkcji paint nie musimy wywoływać, aby działała.

Teraz przejdźmy do wyświetlania obrazów. Musimy zaimportować klasę Image, chyba, że mamy już java.awt.*;. Deklarujemy teraz obiekt typu Image (Zwróćcie uwagę, że Image pisze się z wielkiej litery). Tworzymy obiekt poza metoda init. Teraz w niej

piszemy Obiekt_Image = getImage(). getImage służy do pobierania obrazka z lokalnego dysku. Najlepiej jako pierwszy parametr podać getDocumentBase(). To jest folder, w którym stworzyliśmy nasz package, czyli paczkę z naszymi plikami potrzebnymi do działania programu. Folder ten nazywa się domyślnie scr. Tam powinniśmy umieścić nasz obraz. Gdy już to zrobimy to jako drugi parametr podajmy nazwę obrazu i jego format. Teraz przejdźmy do funkcji paint. Do wyświetlenia obrazu użyjemy metody drawImage, która jako parametry przyjmuje:

nazwę obrazu (Obiekt klasy Image), położenie na osi X, położenie na osi Y, ImageObserve (Formalnie, zawsze to będzie this).

Zobaczmy teraz nasz kod:

 

import java.applet.Applet;
import java.awt.*;

public class Program extends Applet {
    static Applet okno;
    Image waz;
       public void init(){
           okno = this;
           okno.setSize(500, 500);
           okno.setBackground(Color.green);
           waz = getImage(getDocumentBase(), "waz.jpg"); //Pobieranie obrazu
       }
       public void paint(Graphics g)
       {
           g.fillOval(10, 10, 30, 30); //Rysowanie wypełnionego owalu.
           g.drawRect(70, 70, 50, 50); //Rysowanie pustego kwadratu.
           g.drawLine(150, 200, 400, 204); //Rysowanie linii.
           g.drawImage(waz, 10, 300, this); //Wyświetlanie obrazu
       }
}
 

Teraz jeszcze bonusowo, wyświetlanie napisów:

 

import java.applet.Applet;
import java.awt.*;

public class Program extends Applet {
    static Applet okno;
    Image waz;
       public void init(){
           okno = this;
           okno.setSize(500, 500);
           okno.setBackground(Color.green);
           waz = getImage(getDocumentBase(), "waz.jpg"); //Pobieranie obrazu
       }
       public void paint(Graphics g)
       {
           g.fillOval(10, 10, 30, 30); //Rysowanie wypełnionego owalu.
           g.drawRect(70, 70, 50, 50); //Rysowanie pustego kwadratu.
           g.drawLine(150, 200, 400, 204); //Rysowanie linii.
           g.drawImage(waz, 10, 300, this); //Wyświetlanie obrazu
           g.drawString("Wonsz żeczny", 10, 250);
       }
}
 

Wszystko wygląda tak:

 

Bez_tytu_u.jpg

 

 


Opublikowano

No wszystko fajnie ci idzie :) Oby tak dalej. Do kilku rzeczy można się przyczepić ale to tam :P

 

Jedno chcę sprostować:

 

"Jak widać funkcji paint nie musimy wywoływać, aby działała." - xD Funkcje paint wywołuje funkcja repaint(); A repaint jest wywoływana kiedy przesuwamy okno, zmieniamy rozmiar okna etc.

I jeszcze jedno do rysowania. Masz efekt migotania? Poczytaj o bufferstrategy i canvas. Spróbuj zrobić rysowanie na canvansie :)

 

Tip: Możesz używać Graphics2D wraz z Graphics wystarczy że zrobisz : Graphics2D g2d = (Graphics2D) graphics; i wtedy rysujesz przez g2d.draw...

 

Pozdro.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...