Diskuze: Vytvoření kreslícího plátna v javě

Java Java Vytvoření kreslícího plátna v javě

Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:

Zdravím

Snažím se už celé dopoledne přijít na to, jak udělat kreslící plátno v javě. Ať dělám co chcu, tak se mi ta¨m ale prostě nic nezobrazí. Tady máte dosavadní kod.

package platinko;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Platinko {

    public static void main(String[] args) {
        JFrame okno = new JFrame();
        okno.setSize(800, 600);
        okno.setVisible(true);
        okno.setTitle("program");
        okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        FlowLayout layout = new FlowLayout();

        JPanel panel = new JPanel();
        panel.setLayout(layout);
        okno.add(panel);
        panel.setBackground(Color.WHITE);

        Graphics g = null;
        Graphics2D g2d = (Graphics2D)g;
        g2d.setPaint(Color.RED);
        g2d.draw(new Rectangle(100,100,200,200));
        g2d.setPaint(Color.GREEN);
        int[] x = {10, 240, 150};
        int[] y = {30, 100, 310};
        g2d.draw(new Polygon(x,y,3));
        okno.paint(g2d);
    }
}
 
Odpovědět 30.3.2013 13:51
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na martinkobelka
David Čápka:

Musíš si udělat vlastní panel (oddědit) a v něm overridnout paint :)

Nahoru Odpovědět 30.3.2013 13:53
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:

Teď mi to zobrazuje

Exception in thread "main" java.lang.NullPo­interException
at platinko.Platin­ko.main(Platin­ko.java:38)

Chyba je prý na tomto řádku :

g2d.setPaint(Co­lor.RED);

 
Nahoru Odpovědět 30.3.2013 13:58
Avatar
Samik11
Redaktor
Avatar
Odpovídá na martinkobelka
Samik11:
public class Platinko {

    public static void main(String[] args) {
        JFrame okno = new JFrame();
        okno.setSize(800, 600);
        okno.setVisible(true);
        okno.setTitle("program");
        okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        FlowLayout layout = new FlowLayout();

        MojePlatno panel = new MojePlatno();
        okno.add(panel);

    }
}

class MojePlatno extends JPanel
{
        public void paint(Graphics g)
        {
                g.drawRect(20, 20, 50, 50);
        }
}

Asi takhle :-)

Nahoru Odpovědět 30.3.2013 13:58
„Radost vidět a rozumět, to je nejkrásnější dar přírody.“ Albert Einstein
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na martinkobelka
David Čápka:

A čemu se divíš, když voláš metody na null? Musíš kreslit v té metodě paint na plátno co ti přijde v parametru metody. Jinak prý je lepší přepsat paintComponent než paint, ale funguje obojí a vypadají stejně.

Nahoru Odpovědět 30.3.2013 13:59
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
martinkobelka
Redaktor
Avatar
martinkobelka:

A jak můžu určit rozměry plátna? tohle nefunguje

panel.WIDTH = 800;
panel.HEIGHT = 600;

 
Nahoru Odpovědět 30.3.2013 14:31
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 30.3.2013 14:54
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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 7 zpráv z 7.