ITnetwork summer 2020
80 % bodů zdarma na online výuku díky naší Letní akci!
Pouze tento týden sleva až 80 % na e-learning týkající se PHP

Java - 2D Kreslenie

Jednoduchý program k základnému vykreslenie 2D telies v Jave. Program sa skladá z dvoch tried, z toho prvá bude obrahovat metódu main, ktorá spoužtí a zobrazuje okno programu a druhá s nastavením a vykreslením parametrov.

Tento výukový obsah pomáhajú rozvíjať nasledujúce firmy, ktoré možno hľadajú práve teba!

Trieda na vytvorenie okná a pridanie triedy Tree do okna.

import javax.swing.JFrame;
/**
 * @author Atom
 */
public class ChristmasTree{

    public static void main(String[] args) {
        new ChristmasTree();
    }

    public ChristmasTree(){
        JFrame jf = new JFrame("Christmas Tree");
        jf.add(new Tree());
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setSize(350, 350);
        jf.setVisible(true);
    }
}

Druhá trieda Tree vykresľuje na JPanel, ktorý je vložený do prvej triedy JFrame.

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Polygon;
import javax.swing.JPanel;

/**
 * @author Atom
 */
public class Tree extends JPanel{

    public Tree(){ }

    public void paint(Graphics g){
        super.paint(g);
        g.setColor(Color.BLACK);
        g.fillRect(140, 180, 25, 50);

        g.setColor(Color.GREEN);
        for(int i = 0; i < 100; i+=30){
            Triangle(g, 100, 100 + i);
        }

        banky(g , 100,100,20);
        svicka(g ,180,85);
        retez(g,125,110,7);
        retez(g,135,130,3);
        retez(g,110,150,8);
    }

    public void banky(Graphics g, int x, int y, int vel){
       g.setColor(Color.RED);
        g.fillOval(x, y, vel, vel);
    }

    public void svicka(Graphics g, int x, int y){
       g.setColor(Color.GRAY);
        g.fillRect(x, y, 5,10 );
    }
    public void retez(Graphics g,int x, int y, int l){
         for(int i=0;i<l*10;i+=10){
             g.setColor(Color.blue);
            g.fillOval(x+i,y+(i/5),5,5);
         }
     }

    public void Triangle(Graphics g, int x, int y){
        int[] xs = { x, x+50, x+100 };
        int[] ys = { y, y-50, y };
        Polygon triangle = new Polygon(xs, ys, xs.length);
        g.fillPolygon(triangle);
    }
}

Galéria


 

Stiahnuť

Stiahnuté 372x (960 B)
Aplikácia je vrátane zdrojových kódov v jazyku java

 

Všetky články v sekcii
Zdrojákoviště Java - Swing
Program pre vás napísal Opus
Avatar
Ako sa ti páči článok?
Ešte nikto nehodnotil, buď prvý!
Autor se od svých 14ti let věnuje všemožnému co se týká IT oblasti. Jeho oblíbené programovací jazyky jsou C# a Java. Studuje střední školu informačních technologií v Brně, Purkyňově 97 ulici.
Aktivity (1)

 

 

Komentáre

Avatar
albertpatera
Redaktor
Avatar
albertpatera:21.10.2012 23:02

jak muzu vytvorit hru, ve ktere bych pohyboval sipkama?? diky

 
Odpovedať
21.10.2012 23:02
Avatar
Fugiczek
Redaktor
Avatar
Odpovedá na albertpatera
Fugiczek:21.10.2012 23:32

No základ nejspíš bude odchytávat ty šipky, že? :)
To se dělá přes actionListener v daném okně. Jestli nevíš jak tak si pročti zde: http://docs.oracle.com/…istener.html
nebo se podívej na zdrojáky mé staré hry zde: http://www.itnetwork.cz/…ad-snake-2d/
tam klávesy jako šipky odchytávám. Dále jak tu informaci/šipky zpracuješ je na tobě.

 
Odpovedať
21.10.2012 23:32
Avatar
albertpatera
Redaktor
Avatar
albertpatera:21.10.2012 23:34

diky

 
Odpovedať
21.10.2012 23:34
Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:1.4.2013 19:17

Nevíte jak udělat, aby se obsah vykresloval opakovaně (aktualizoval se?) Snažím se do kodu přidat, že se jeden obdelník vykresluje na náhodné souřadnice, a ty souřadnice se náhodně generují každých 5s, obdélník ale stojí jako přibitý na místě. Pouze když okno s aplikací zvětšuju/zmenšuju, tak se souřadnice změní. Nevíte jak to vyřešit?

 
Odpovedať
1.4.2013 19:17
Avatar
Fugiczek
Redaktor
Avatar
Odpovedá na martinkobelka
Fugiczek:1.4.2013 19:19

zkus kazdych tech 5s volat metodu repaint()

 
Odpovedať
1.4.2013 19:19
Tento výukový obsah pomáhajú rozvíjať nasledujúce firmy, ktoré možno hľadajú práve teba!
Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:1.4.2013 19:27

Díky, funguje to, dal jsem do do cyklu while, kterej jsem vždycky po skončení na 5s uspal

 
Odpovedať
1.4.2013 19:27
Avatar
Kit
Redaktor
Avatar
Odpovedá na martinkobelka
Kit:2.4.2013 10:55

Můžeš také použít třídu Timer.

Odpovedať
2.4.2013 10:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:2.4.2013 19:24

Mám to jenom takhle, jenomže předposlední tři řádky padají chybou.

public static void main(String[] args) {
       JFrame okno = new JFrame();
       okno.setSize(800, 640);
       okno.setTitle("Vesmírná střílečka");
       okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       herniplocha = new vykresleni(800, 600);
       okno.add(herniplocha);
       nactiobrazky();


       okno.setVisible(true);
   }
 
Odpovedať
2.4.2013 19:24
Avatar
Kit
Redaktor
Avatar
Odpovedá na martinkobelka
Kit:3.4.2013 8:51

Když nenapíšeš jakou chybu to hlásí...

Odpovedať
3.4.2013 8:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 9 správy z 9.