Oppure

Loading
01/11/06 10:48
Matt
Salve a tutti, qualcuno mi sa dire dove ho sbagliato?????

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.Graphics;

public class palla {
    
    int altezza;
    int larghezza;
    int a;
    int b;
    Graphics g;
    JButton muovi;
    
    palla(){
        JFrame f = new JFrame();
        f.setLayout(new FlowLayout());
        muovi = new JButton("muovi";);
        f.add(muovi);
        f.setSize(400, 700);
        f.setVisible(true);
        altezza = 15;
        larghezza = 15;
        b = 0;
        a =0;
        g.drawRect(a,b,altezza,larghezza);
        muovi.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent avvio){
                altezza++;
                larghezza++;
            }
            });
    }
    public static void main(String[] args){
    palla pallone = new palla();
    }
}

Mi da il seguente errore di runtime:
Exception in thread "main" java.lang.NullPointerException
    at palla.<init>(palla.java:28)
    at palla.main(palla.java:37).
aaa
01/11/06 12:30
netarrow
NullPointeException è un puntatore che punta a null quindi non inizializzato, vedendo il codice non ho visto l'inizializzazione di Graphics, per inizializzarlo dovresti fare se non ricordo male:

g = componente.getGraphics();


(controlla sulla documentazione casomai)

cmq nei componenti dovresti ridefinire paintComponent(Graphics)

proverò il sorgente e ti saprò dire.

ciao
Ultima modifica effettuata da netarrow 01/11/06 12:34
aaa
01/11/06 12:50
Rand
a me lo compila senza errori col java 1.5 8-|
aaa
01/11/06 13:22
netarrow
infatti non è un problema di compilazione, ma è un eccezione che viene lanciata a Run-time visto che l'oggetto graphics viene usato senza essere inizializzato, l'oggetto g è un puntatore nullo.
aaa
01/11/06 13:51
Black Shadow
Esattamente, cmq credo che tu abbia dato già la giusta soluzione...:k:
aaa
01/11/06 14:01
netarrow
Ecco il sorgente che funziona, ho usato Canvas... però un pannello qualsiasi che ridefinisce paintComponents sarebbe andato cmq credo.

import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 

class lavagna extends Canvas {
int altezza; 
int larghezza; 
int a; 
int b;

lavagna() {
altezza = 15; 
larghezza = 15; 
b = 2; 
a =2;
setVisible(true);
setBackground(Color.red);
setSize(200, 350);
repaint(); 
}

public void muovi() {
altezza++;
larghezza++;
repaint();
}

public void paint(Graphics g) {
  g.drawRect(a, b, altezza, larghezza);
}

}

public class palla { 

 
lavagna c = new lavagna(); 
JButton muovi; 

palla(){ 
JFrame f = new JFrame(); 
f.setLayout(new FlowLayout(FlowLayout.CENTER)); 
muovi = new JButton("muovi"); 
f.add(muovi);
f.add(c); 
f.setSize(400, 700); 
f.setVisible(true); 

muovi.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent avvio){ 
c.muovi();
} 
}); 
} 
public static void main(String[] args){ 
palla pallone = new palla(); 
} 
}


N.B a e b li faccio partire da 2 solo perchè non mi piaceva vedere solo metà quadratino :D, così è staccato dai bordi rimetti normale se vuoi ovviamente.
Canvas l'ho messa rossa per vederla bene; per adattare guarda sulla documentazione.

ciao
Ultima modifica effettuata da netarrow 01/11/06 14:03
aaa
02/11/06 7:31
Matt
Grazie tanto!!!!:k:
aaa
02/11/06 16:10
Rand
Postato originariamente da netarrow:

infatti non è un problema di compilazione, ma è un eccezione che viene lanciata a Run-time visto che l'oggetto graphics viene usato senza essere inizializzato, l'oggetto g è un puntatore nullo.


hai ragione netarrow nn avevo letto bene :k:
Ultima modifica effettuata da Rand 02/11/06 16:11
aaa