Programátorská sociální síť a materiálová základna pro C#, Java, PHP, HTML, CSS, JavaScript a další.


Přihlásit se Registrace  

Java - 2D Kreslení

Zpět do sekce Okenní aplikace v Javě

Jednoduchý program k základnímu vykreslení 2D těles v Javě. Program se skládá ze dvou tříd, z toho první bude obrahovat metodu main, která spoužtí a zobrazuje okno programu a druhá s nastavením a vykreslením parametrů.

Třída na vytvoření okna a přidání třídy 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á třída Tree vykresluje na JPanel, který je vložen do první třídy 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);
    }
}

Screenshoty


 

 

Program byl vytvořen roku: 2012

 

Stáhnout

Java - 2D Kreslení 119x (960 Bajtů)

Program je včetně zdrojových kódů v jazyce java

 

Autor: Opus
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.

Jak se vám líbí článek?
Ještě nikdo nehodnotil, buď první!


 


Všechny články v sekci
Okenní aplikace v Javě
Tutoriály v sekci jsou zaměřeny na okenní GUI aplikace v Javě. Vysvětlují strukturu okenních aplikací a jednotlivé komponenty Swing.
Další článek
Java GUI - Základní komponenty
V tomto Java Swing tutoriálu přidáme do našeho okna pár základních komponent, budou jimi JButton, JLabel a JTextField. Použijeme FlowLayout.


 

 

Vaše komentáře:

21.10.2012 23:02:14
Avatar
albertpatera
Redaktor
Skill: 486 DX
DotDotDotDotDotDotDotDotDotDot

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


Odpovědět   i++; | i--;
21.10.2012 23:32:01
Avatar

Redaktor
Skill: Core 2 Duo
DotDotDotDotDotDotDotDotDotDot
Odpovídá na albertpatera:

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.devbook.cz/…ad-snake-2d/
tam klávesy jako šipky odchytávám. Dále jak tu informaci/šipky zpracuješ je na tobě.


Odpovědět   i++; | i--;
21.10.2012 23:34:47
Avatar
albertpatera
Redaktor
Skill: 486 DX
DotDotDotDotDotDotDotDotDotDot
01.04.2013 19:17:50
Avatar
martinkobelka
Redaktor
Skill: 486 DX
DotDotDotDotDotDotDotDotDotDot

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?


Odpovědět   i++; | i--;
01.04.2013 19:19:27
Avatar

Redaktor
Skill: Core 2 Duo
DotDotDotDotDotDotDotDotDotDot
Odpovídá na martinkobelka:

zkus kazdych tech 5s volat metodu repaint()


Odpovědět   i++; | i--;
01.04.2013 19:27:48
Avatar
martinkobelka
Redaktor
Skill: 486 DX
DotDotDotDotDotDotDotDotDotDot

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


Odpovědět   i++; | i--;
02.04.2013 10:55:49
Avatar
Kit
Moderátor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na martinkobelka:

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


Odpovědět   i++; | i--;
Aplikace je hotova až tehdy, když z ní nelze nic odebrat.
02.04.2013 19:24:45
Avatar
martinkobelka
Redaktor
Skill: 486 DX
DotDotDotDotDotDotDotDotDotDot

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

Odpovědět   i++; | i--;
03.04.2013 08:51:37
Avatar
Kit
Moderátor
Skill: Mainframe
DotDotDotDotDotDotDotDotDotDot
Odpovídá na martinkobelka:

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


Odpovědět   i++; | i--;
Aplikace je hotova až tehdy, když z ní nelze nic odebrat.

 

Zobrazeno 9 z 9 zpráv


Přidat novou zprávu

Avatar
Neregistrovaný

Pro výhody se přihlaš. Pokud ještě nemáš účet, zaregistruj se.

Jméno:
E-mail:
Web:

Šťastný Smutný S vyplazeným jazykem Mrkající Smějící se Plačící Cool Nemocný Naštvaný S brýlemi Stydící se On to nebyl Překvapený Hodně překvapený Šokovaný Srdce sdraco
Vložení obrázků Obrázky mohou nahrávat pouze registrovaní uživatelé
Vložení dlouhého zdrojáku Pouze pro registrované

 

Pro ověření prosím zaškrtněte pravdivá tvrzení:
Registrovaní uživatelé se tímto zdržovat nemusí. Zaregistrovat se

Píši proto, že zpráva má užitečnou hodnotu
Chci porušovat pravidla
Jsem robot
Nejsem robot