j zyk java
Download
Skip this Video
Download Presentation
Język Java

Loading in 2 Seconds...

play fullscreen
1 / 52

Język Java - PowerPoint PPT Presentation


  • 127 Views
  • Uploaded on

Język Java. Rysowanie GUI Określanie wyglądu komponentów. Rysowanie GUI. Rysowanie GUI w Swingu np. przy pierwszym wyświetleniu przy ponownym odsłonięciu przy zmianach stanu programu Kolejność rysowania - zgodnie z hierarchią komponentów Każdy komponent rysuje się sam.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Język Java' - gavan


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
j zyk java

Język Java

Rysowanie GUI

Określanie wyglądu komponentów

rysowanie gui
Rysowanie GUI
  • Rysowanie GUI w Swingu np.
    • przy pierwszym wyświetleniu
    • przy ponownym odsłonięciu
    • przy zmianach stanu programu
  • Kolejność rysowania - zgodnie z hierarchią komponentów
  • Każdy komponent rysuje się sam
kolejno rysowania gui
Kolejność rysowania GUI
  • Przykład - aplikacja AplikSwing
    • JFrame - rysuje ramkę
    • panel z zawartością (content pane) - rysuje tło (szary prostokąt)
    • JLabel - rysuje tekst etykiety
    • JButton - rysuje przycisk i ewentualny napis
w asno ci komponentu
Własności komponentu
  • Komponent może być
    • przezroczysty
    • nieprzezroczysty (opaque) - z tłem
  • Na komponencie można rysować
  • Ustawianie
    • kolorów
    • wyglądu czcionki komponentu
    • obramowania
przerysowywanie komponentu
Przerysowywanie komponentu
  • Przerysowanie komponentu - automatyczne
  • Wymuszenie przerysowania - metoda repaint()
  • W przypadku zmiany rozmiaru lub pozycji komponentu - wywołanie metody revalidate() przed repaint()
grafika
Grafika
  • Podstawowe operacje graficzne np.
    • rysowanie linii
    • rysowanie figur
    • rysowanie znaków tekstu
    • wstawianie obrazów
  • Operacje - zdefiniowane jako metody klasy java.awt.Graphics
  • Obiekt klasy Graphics przechowuje aktualne ustawienia stanu graficznego
grafika rysowanie
Grafika: rysowanie
  • Rysowanie - na dowolnym komponencie
  • Najczęściej - rysowanie na panelu (JPanel)
  • Wszystkie polecenia rysowania - w metodzie paintComponent() klasy JComponent (konieczność przesłonięcia)
  • Argument metody - obiekt klasy Graphics
uk ad wsp rz dnych komponentu
Układ współrzędnych komponentu

jednostka układu współrzędnych - piksel

x

(0,0)

(szer-1, wys-1)

y

ustalanie wymiar w komponentu
Ustalanie wymiarów komponentu
  • Określanie wymiarów komponentu (metody klasy JComponent)

int getWidth()

int getHeight()

  • Rysowanie obramowania - zmniejszenie wymiaru komponentu
  • Określenie rozmiaru obramowania - metoda getInsets(), np.

Insets b = getInsets(); s = getWidth() - b.left - b.right;w = getHeight() - b.top - b.bottom;

grafika dost pne kszta ty
Grafika: dostępne kształty
  • Linia (Line)
  • Figury
    • prostokąt (Rect)
    • prostokąt z efektem 3D (3DRect)
    • prostokąty o zaokrąglonych brzegach (RoundRect)
    • owal - okrąg lub elipsa (Oval)
    • łuk (Arc)
  • Wieloboki (Polygon, Polyline)
grafika rysowanie kszta t w
Grafika: rysowanie kształtów
  • Rysowanie linii

void drawLine(x1, y1, x2, y2)

  • Rysowanie figur
    • tylko brzegi - metoda drawXxx()
    • brzegi i wypełnienie - metoda fillXxx ()
  • Przykład - rysowanie prostokąta

void fillRect(xlg, ylg, szer, wys)

void drawRect(xlg, ylg, szer-1, wys-1)

  • Wymiary - liczby całkowite (int)
grafika rysowanie kszta t w1
Grafika: rysowanie kształtów
  • Wieloboki - argument w postaci grupy par współrzędnych x i y wierzchołków
  • Owale - argumenty
    • współrzędne x i y lewego górnego rogu obszaru, w który zostanie wpisany owal
    • szerokość i wysokość owalu
  • Łuki - argumenty jak dla owalu oraz
    • kąt, od jakiego zacznie się rysowanie łuku
    • kąt określający rozpiętość łuku
aplet rysunek
Aplet Rysunek

import javax.swing.*;

import java.awt.*;

public class Rysunek extends JApplet {

public void init() {

panelRys mojPanel = new panelRys();

getContentPane().add(mojPanel,

BorderLayout.CENTER);

}

}

slide15
class panelRys extends JPanel {

public void paintComponent(Graphics g) {

super.paintComponent(g); // tło

Insets w = getInsets();

int X = getWidth() - w.left - w.right;

int Y = getHeight() - w.top - w.bottom;

int x1 = X/4; int y1 = Y/4;

int szer = X/2; int wys = Y/2;

g.drawRect(x1, y1, szer, wys);

g.fillRect(szer, y1, x1, y1);

int x2 = x1/2; int y2 = y1/2;

g.drawLine(x1+x2, y2, x1+x2, y1+wys+y2)

}

}

obrazy
Obrazy
  • Obrazy (formaty GIF i JPEG) - przechowywane jako odrębne pliki
  • Obraz - obiekt klasy java.awt.Image
  • Metody klasy Image zwracające wymiary obrazu - getWidth() i getHeight()
  • Umieszczanie obrazu na komponencie
    • kopiowanie do komponentu
    • wyświetlanie
obrazy kopiowanie aplikacje
Obrazy: kopiowanie (aplikacje)
  • Metoda getImage() klasy java.awt.Toolkit
    • Image getImage(URL url)
    • Image getImage(String plik)
  • Przykład

Toolkit tk;

Image rys1, rys2;

tk = Toolkit.getDefaultToolkit();

rys1 = tk.getImage("obrazek.gif");

rys2 = tk.getImage(new URL(http://www.new.pl/rys/p1.gif));

obrazy kopiowanie aplety
Obrazy: kopiowanie (aplety)
  • Metoda getImage() klasy Applet
    • Image getImage(URL url)
    • Image getImage(URL url, String plik)
  • Metody klasy Applet zwracające obiekty klasy URL
    • getCodeBase() - adres URL katalogu z apletem
    • getDocumentBase() - adres URL katalogu z dokumentem HTML
  • Przykład

Image rys = getImage(getDocumentBase,"plik.gif");

obrazy wy wietlanie
Obrazy: wyświetlanie
  • Wyświetlanie - metoda drawImage() klasy Graphics
  • Sposoby wyświetlania
    • obraz w jego oryginalnych wymiarach

void drawImage(obraz,x,y,this);

    • obraz przeskalowany

void drawImage(obraz,x,y,

szer, wys, this);

  • Argumenty metody x, y - współrzędne lewego górnego rogu obrazu
aplet obraz
Aplet Obraz

import javax.swing.*; import java.awt.*;

public class Obraz extends JApplet {

public void init() {

Image obraz=getImage(getCodeBase(),

"fotki/foto.jpg");

panelObraz mojPanel = new

panelObraz(obraz);

getContentPane().add(mojPanel,

BorderLayout.CENTER);

}

}

slide21
class panelObraz extends JPanel {

Image obraz;

public panelObraz(Image obraz) {

this.obraz = obraz;

}

public void paintComponent(Graphics g) {

super.paintComponent(g);

int a = obraz.getWidth(this);

int b = obraz.getHeight(this);

g.drawImage(obraz, 0, 0, this);

g.drawImage(obraz, a, 0,

a+10, b/2, this);

}

}

tekst
Tekst
  • Klasy z pakietu java.awt odpowiedzialne za wygląd tekstu
    • Font - określa rodzaj, styl i wielkość czcionki
    • FontMetrics - określa szczegółowo parametry czcionki - tzw. metrykę(np. wysokość i szerokość liter)
  • Rysowanie tekstu na komponencie
    • komponenty Swingu
    • metoda drawString() klasy Graphics
tekst wyb r rodzaju czcionki
Tekst: wybór rodzaju czcionki
  • Argumenty konstruktora klasy Font
    • nazwa czcionki, np. "TimesRoman" ("serif"), "Courier" ("monospaced"), "Helvetica" ("sanserif")
    • styl czcionki, np. Font.PLAIN, Font.BOLD, Font.ITALIC (można dodawać)
    • wielkość czcionki
  • Jeśli użyta czcionka nie jest dostępna, Java użyje czcionki domyślnej
  • Ustawienie czcionki aktualnej - setFont()
tekst rysowanie klasa graphics
Tekst: rysowanie, klasa Graphics
  • Rysowanie tekstu o parametrach określonych aktualną czcionką

void drawString("tekst", x, y)

  • Przykład

Font f = new Font("TimesRoman",

Font.PLAIN, 30);

g.setFont(f);

s = "Java";

g.drawString(s, 50, 50);

tekst wymiary czcionki
Tekst: wymiary czcionki

Xy

Ascent

Height

Descent

a

Leading

tekst metryka czcionki
Tekst: metryka czcionki
  • Metody klasy FontMetrics
    • stringWidth(String) - zwraca szerokość łańcucha znaków (w pikselach)
    • charWidth(char) - zwraca szerokość znaku
    • getAscent()
    • getDescent()
    • getLeading()
    • getHeight()
kolory
Kolory
  • Kolory i metody operujące na kolorach - definicje w klasie java.awt.Color
  • Abstrakcyjne wzorzec koloru - kombinacja wartości kolorów podstawowych (RGB) - liczb z zakresu 0 ÷ 255, np.

Color k = new Color(100, 50, 150);

  • Kolor niedostępny w systemie - zastępowany podobnym
kolory nazwy i warto ci rgb
Kolory: nazwy i wartości RGB

Color.black 0, 0, 0

Color.white 255, 255, 255

Color.red 255, 0, 0

Color.green 0, 255, 0

Color.blue 0, 0, 255

Color.gray 128, 128, 128

Color.lightGgray 192, 192, 192

Color.darkGray 64, 64, 64

Color.magenta 255, 0, 255

Color.yellow 255, 255, 0

Color.cyan 0, 255, 255

Color.pink 255, 175, 175

Color.orange 255, 200, 0

okre lanie wygl du komponentu
Określanie wyglądu komponentu
  • Metoda klasy JComponent ustawiająca przezroczystość komponentu - setOpaque(boolean), np. przeroczysty:

komponent.setOpaque(false);

  • Kontrola przezroczystości - getOpaque()
  • Metoda klasy JComponent ustawiająca czcionkę komponentu - setFont(Font)
  • Informacje o czcionce - getFont(), getFontMetrics()
okre lanie wygl du komponentu1
Określanie wyglądu komponentu
  • Metody klasy JComponent ustawiające kolor
    • setBackground(Color) - tła
    • setForeground(Color) - pierwszego planu
  • Analogiczne metody zwracające ustawienia
    • getBackground(), getForeground()
  • Ustawianie koloru, np.

komponent.setBackground(Color.red);

  • Ustawianie własnego koloru, np.

Color c = new Color(150, 10, 150);

komponent.setForeground(c);

aplet kolory
Aplet Kolory

import javax.swing.*; import java.awt.*;

public class Kolory extends JApplet {

public void init() {

Font c = new Font("sanserif",

Font.ITALIC, 40);

JLabel napis = new JLabel("Java",

JLabel.CENTER);

Container kont = getContentPane();

kont.add(napis);

napis.setOpaque(true);

napis.setBackground(Color.yellow);

napis.setForeground(Color.blue);

napis.setFont(c);

}

}

okre lanie wygl du komponentu2
Określanie wyglądu komponentu
  • Metody klasy JComponent określające wymiary elementu
    • int getWidth()
    • int getHeight()
    • Dimension getSize()
    • Dimension getPreferredSize()
    • Dimension getMaximumSize()
    • Dimension getMinimumSize()
  • Inne metody np.
    • void setPreferredSize(Dimension)
obramowanie komponentu
Obramowanie komponentu
  • Dodawanie obramowania - metoda setBorder() klasy JComponent
  • Typy obramowania (klasa javax.swing.BorderFactory)
    • Line, Etched, LoweredBevel, RaisedBevel, Empty, Matte, Titled, Compound
  • Tworzenie obramowania - createXxxBorder()
  • Przykład

b=BorderFactory.createLineBorder(Color.black);

komponent.setBorder(b);

aplet kropki
Aplet Kropki

import java.awt.event.*;

import javax.swing.*;

import java.awt.*;

public class Kropki extends JApplet {

JLabel tekst = new JLabel("Kliknij

w dowolnym miejscu białego obszaru!", JLabel.LEFT);

myszPanel panel = new myszPanel();

slide41
public void init() {

Container kont = getContentPane();

tekst.setOpaque(true);

tekst.setBackground(Color.yellow);

panel.setOpaque(true);

panel.setBackground(Color.white);

panel.setForeground(Color.blue);

panel.setBorder(

BorderFactory.createEtchedBorder());

kont.add(panel, BorderLayout.CENTER);

kont.add(tekst, BorderLayout.SOUTH);

}

}

slide42
class myszPanel extends JPanel {

Point p;

public myszPanel() {

addMouseListener(new MouseAdapter() {

public void mousePressed(MouseEvent zd)

{

int x = zd.getX(); int y = zd.getY();

if (p == null)

p = new Point(x, y);

else { p.x = x; p.y = y; }

repaint();

}

});

}

slide43
public void paintComponent(Graphics g) {

super.paintComponent(g);

if (p != null)

g.fillOval(p.x-10, p.y-10, 20, 20);

}

}

java 2d
Java 2D
  • Java 2D - zbiór dodatkowych klas dostarczających programom wysokiej jakości grafiki dwuwymiarowej
  • Java2D umożliwia m.in.
    • ustalenie rodzaju wypełnienia (np. gradienty)
    • ustalenie szerokości i rodzaju linii
    • przesuwanie, obracanie, skalowanie tekstu i grafiki
  • Współrzędne w Java2D – typu float
java 2d klasa graphics2d
Java 2D: Klasa Graphics2D
  • Operacje rysowania grafiki - klasa Graphics
  • Java2D używa obiektu klasy Graphics2D (pakiet java.awt) konieczność rzutowania
  • Przykład – metoda paintComponent()

public void paintComponent(Graphics g) {Graphics2D g2D=(Graphics2D)g;// treść metody}

java 2d metody grafiki 2d
Java 2D: metody grafiki 2D
  • Wykonywanie wszystkich operacji grafiki 2D - na obiektach klasy Graphics2D, nawet jeśli metody 2D i nie-2D sa takie same
  • Przykład – definiowanie kolorówg2D.setColor(Color.black);
  • Dodatkowe klasy grafiki 2D - w pakiecie java.awt.geom - np. Line2D, Line2D.Float, Point2D, Rectangle2D, Rectangle2D.Float
java 2d rodzaje wype nienia
Java 2D: rodzaje wypełnienia
  • Wypełnianie w Java2D – metoda setPaint()
  • Rodzaje wypełnień
    • kolorem
    • gradientami
    • teksturą
    • własnym wzorem
  • Interfejs Paint zawiera klasy GradientPaint, TexturePaint i Color
java 2d wype nianie gradientami
Java 2D: wypełnianie gradientami
  • Konstruktory klasy GradientPaint

GradientPaint(x1, y1, kolor1, x2, y2, kolor2)GradientPaint(x1, y1, kolor1, x2,

y2, kolor2, true)

  • Rysowanie gradientu
    • początek w punkcie x1,y1 - kolor kolor1
    • koniec w punkcie x2,y2 - kolor kolor2
    • true określa, czy gradient ma być rysowany cyklicznie
aplet gradient
Aplet Gradient

import javax.swing.*;

import java.awt.*;

import java.awt.geom.*;

public class Gradient extends JApplet {

public void init() {

panelRys mojPanel = new panelRys();

getContentPane().add(mojPanel, BorderLayout.CENTER);

}

}

slide50
class panelRys extends JPanel {

public void paintComponent(Graphics g){

super.paintComponent(g);

Dimension d = getSize();

int s = d.width; int w = d.height;

Graphics2D g2D = (Graphics2D)g;

GradientPaint wzor = new

GradientPaint(0, 0, Color.white,

s, w,Color.blue);

g2D.setPaint(wzor);

Rectangle2D.Float pr = new

Rectangle2D.Float(0, 0, s, w);

g2D.fill(pr);

}

}

java 3d
Java 3D
  • Java 3D - zbiór klas umożliwiających tworzenie rzeczywistości wirtualnej, rozszerzenie pakietu JDK
  • Najważniejsze klasy Javy 3D - w pakietach javax.media.j3d i javax.vecmath
ad