IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
martinkobelka
Tvůrce
Avatar
martinkobelka:30.3.2013 13:51

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 Hartinger
Vlastník
Avatar
Odpovídá na martinkobelka
David Hartinger:30.3.2013 13:53

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

Nahoru Odpovědět
30.3.2013 13:53
New kid back on the block with a R.I.P
Avatar
martinkobelka
Tvůrce
Avatar
martinkobelka:30.3.2013 13:58

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
Tvůrce
Avatar
Odpovídá na martinkobelka
Samik11:30.3.2013 13:58
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 Hartinger
Vlastník
Avatar
Odpovídá na martinkobelka
David Hartinger:30.3.2013 13:59

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
New kid back on the block with a R.I.P
Avatar
martinkobelka
Tvůrce
Avatar
martinkobelka:30.3.2013 14:31

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 Hartinger
Vlastník
Avatar
Odpovídá na martinkobelka
David Hartinger:30.3.2013 14:54

setPrefferedSize()

Nahoru Odpovědět
30.3.2013 14:54
New kid back on the block with a R.I.P
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.