Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
Avatar
martinkobelka
Redaktor
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 Čápka
Tým ITnetwork
Avatar
Odpovídá na martinkobelka
David Čápka: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
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: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
Redaktor
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 Čápka
Tým ITnetwork
Avatar
Odpovídá na martinkobelka
David Čápka: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
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: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 Čápka
Tým ITnetwork
Avatar
Odpovídá na martinkobelka
David Čápka:30.3.2013 14:54

setPrefferedSize()

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.