Java - 2D Kreslení

Java Swing Zdrojákoviště Java - 2D Kreslení

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

Galerie

Program byl vytvořen v roce 2012.

 

Stáhnout

Staženo 352x (960 B)
Aplikace je včetně zdrojových kódů v jazyce java

 

  Aktivity (1)

Program pro vás napsal Opus
Avatar
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 ti líbí článek?
Celkem (1 hlasů) :
4444 4


 


Miniatura
Všechny články v sekci
Zdrojákoviště Java - Swing

 

 

Komentáře

Avatar
albertpatera
Redaktor
Avatar
albertpatera:

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

 
Odpovědět 21.10.2012 23:02
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na albertpatera
Fugiczek:

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ě.

 
Odpovědět 21.10.2012 23:32
Avatar
albertpatera
Redaktor
Avatar
albertpatera:

diky

 
Odpovědět 21.10.2012 23:34
Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:

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 1.4.2013 19:17
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na martinkobelka
Fugiczek:

zkus kazdych tech 5s volat metodu repaint()

 
Odpovědět 1.4.2013 19:19
Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:

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

 
Odpovědět 1.4.2013 19:27
Avatar
Kit
Redaktor
Avatar
Odpovídá na martinkobelka
Kit:

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

Odpovědět 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:

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 2.4.2013 19:24
Avatar
Kit
Redaktor
Avatar
Odpovídá na martinkobelka
Kit:

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

Odpovědět 3.4.2013 8:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.