Salve, all'avvio del mio programma compare questo errore
Exception in thread "main" java.lang.NullPointerException
at MyPanel.<init>(Trol.java:33)
at MyFrame.<init>(Trol.java:136)
at Trol.main(Trol.java:15)
ma non riesco a trovare nullaposto il codice se qualcuno può darmi una mano
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.Timer;
public class Trol {
public static void main(String[] args){
MyFrame F= new MyFrame("Esercizio");
F.setSize(500,500);
}
}
class MyPanel extends JPanel implements MouseMotionListener,ActionListener,MouseListener{
int abba=0;
ArrayList<Segmento> segmenti;
int contaClick;
Segmento s;
Timer timer;
MyPanel panel;
Color c;
public MyPanel(){
segmenti = new ArrayList();
panel.addMouseMotionListener(this);
panel.addMouseListener(this);
contaClick = 0;
timer = new Timer(25,this);
timer.start();
c=(Color.WHITE);
}
public void paintComponent (Graphics g){
super.paintComponent(g);
if (segmenti.size()>0){
for (int i = 0; i<segmenti.size(); i++){
Segmento s = segmenti.get(i);
g.drawLine(s.getX_inizio(),s.getY_inizio(),
s.getX_fine(),s.getY_fine());
}
}
}
public void addSegmento(Segmento s){
segmenti.add(s);
}
public void modSegmento(int x2, int y2){
segmenti.get(segmenti.size()-1).setX_fine(x2);
segmenti.get(segmenti.size()-1).setY_fine(y2);
}
public void mouseClicked(MouseEvent e) {
if (contaClick == 0){
contaClick++;
s = new Segmento(e.getX(),e.getY(),e.getX(),e.getY());
panel.addSegmento(s);
}
else {
contaClick = 0;
s.SegmentoFine(e.getX(),e.getY());
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
/* System.out.println("segmento creato");*/
System.out.println("Finali----coord x:" + e.getX()+ " coord y:" + e.getY());
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseMoved(MouseEvent e){
if (contaClick == 1){
panel.modSegmento(e.getX(),e.getY());
}
System.out.println("mouse mosso");
}
public void actionPerformed(ActionEvent e) {
panel.repaint();
}
public void mouseDragged(MouseEvent e) {
}
public Color getColor(){
return c;
}
public void setColor(Color c){
this.c=c;
}
public void clear(){
contaClick=0;
s=null;
segmenti=new ArrayList<Segmento>();
c=(Color.WHITE);
}
}
class MyFrame extends JFrame implements ActionListener{
MyPanel mp1;
JPanel jp1;
JButton jc1,jb1,jb2;
JLabel jl1;
JTextField jt1;
MyFrame(String s){
this.setTitle(s);
this.setLayout(new BorderLayout());
jl1=new JLabel("PROVA!!!!");
jl1.setBorder(BorderFactory.createLineBorder(Color .red));
add(jl1,BorderLayout.NORTH);
mp1=new MyPanel();
mp1.setBorder(BorderFactory.createLineBorder(Color .red));
add(mp1,BorderLayout.CENTER);
jc1=new JButton("Colore");
jc1.addActionListener(this);
add(jc1,BorderLayout.WEST);
jb1=new JButton("Uscita");
jb1.addActionListener(this);
jb1.setBorder(BorderFactory.createLineBorder(Color .blue));
jb2=new JButton("Clear");
jb2.addActionListener(this);
jb2.setBorder(BorderFactory.createLineBorder(Color .blue));
jt1=new JTextField("");
jt1.setBorder(BorderFactory.createLineBorder(Color .blue));
jl1=new JLabel("colore");
jl1.setBorder(BorderFactory.createLineBorder(Color .blue));
jl1.setFont(new Font("Comic",Font.PLAIN,14));
jl1.setForeground(Color.green);
jp1=new JPanel();
jp1.setBorder(BorderFactory.createLineBorder(Color .red));
jp1.setLayout(new GridLayout(3,2));
jp1.add(jb1);
jp1.add(jb2);
jp1.add(jt1);
jp1.add(jl1);
add(jp1,BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public MyFrame(){
this("Finestra di prova");
}
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().equals("Colore")) {
Color c = JColorChooser.showDialog(this, "colore", mp1.getColor());
mp1.setColor(c);
}
if (ae.getActionCommand().equals("Clear")) {
mp1.clear();
mp1.repaint();
}
if (ae.getActionCommand().equals("Uscita")) {
if (JOptionPane.showConfirmDialog(this,"Confermi uscita","Uscita",JOptionPane.OK_CANCEL_OPTION)==0)
System.exit(0);
}
}
}