J zyk java
This presentation is the property of its rightful owner.
Sponsored Links
1 / 52

Język Java PowerPoint PPT Presentation


  • 84 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

Język Java

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


Kolejno rysowania komponentu

Kolejność rysowania komponentu


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);

}

}


J zyk java

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);

}

}


J zyk java

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);

}

}


Widok apletu obraz

Widok apletu Obraz


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.black0, 0, 0

Color.white 255, 255, 255

Color.red255, 0, 0

Color.green0, 255, 0

Color.blue0, 0, 255

Color.gray128, 128, 128

Color.lightGgray192, 192, 192

Color.darkGray64, 64, 64

Color.magenta 255, 0, 255

Color.yellow255, 255, 0

Color.cyan0, 255, 255

Color.pink255, 175, 175

Color.orange255, 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);

}

}


Widok apletu kolory

Widok apletu Kolory


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);


Obramowania rodzaje

Obramowania: rodzaje


Obramowania rodzaje1

Obramowania: rodzaje


Obramowania rodzaje2

Obramowania: rodzaje


Obramowania rodzaje3

Obramowania: rodzaje


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();


J zyk java

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);

}

}


J zyk java

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();

}

});

}


J zyk java

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);

}

}


J zyk java

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);

}

}


Widok apletu gradient

Widok apletu Gradient


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


  • Login