Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Využij akce až 80% zdarma při nákupu e-learningu. Více informací .
BF summer
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
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
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
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
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
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
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.