Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Ardoise magique] Erreur d'origine inconue

NullPointerException

Sujet résolu
    2 mars 2015 à 17:43:02

    Bonjour, 

    Je suis en train de faire le TP de cysboy sur l'ardoise magique en java. Mais lorsque je lance mon programme, quelque fois (pas TOUT le temps) une erreur apparaît dans la console, mais le programme ne s'arrete pas et fonctionne meme tres bien !!!!

    Voici mon code :

    Fenetre.java

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.*;
    
    public class Fenetre extends JFrame{
    	Panneau pan = new Panneau();
    	private JMenuBar menuBar = new JMenuBar();
    	JMenu menuFichier = new JMenu("Fichier"),
    			menuForme = new JMenu("Forme"),
    			menuTaille = new JMenu("Taille"),
    			menuCouleur = new JMenu("Couleur");
    	
    	JMenuItem itemQuitter = new JMenuItem("Quitter"),
    			itemEffacer = new JMenuItem("Effacer");
    	
    	JMenuItem itemRond = new JMenuItem("Rond"),
    			itemCarre = new JMenuItem("Carré");
    	
    	JMenuItem itemRouge = new JMenuItem("Rouge"),
    			itemBleu = new JMenuItem("Bleu"),
    			itemJaune = new JMenuItem("Jaune"),
    			itemNoir = new JMenuItem("Noir"),
    			itemVert = new JMenuItem("Vert");
    	
    	JMenuItem itemPetit = new JMenuItem("Petit"),
    			itemMoyen = new JMenuItem("Moyen"),
    			itemGrand = new JMenuItem("Grand");
    	
    	public Fenetre()
    	{
    		this.setTitle("Ardoise magique");
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setSize(800, 650);
    		this.setLocationRelativeTo(null);
    		this.setVisible(true);
    		
    		initMenus();
    		
    		this.setContentPane(pan);
    	}
    	
    	private void initMenus()
    	{
    		itemQuitter.addActionListener(new QuitterListener());
    		itemEffacer.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				pan.effacer();
    			}
    		});
    		
    		menuFichier.add(itemEffacer);
    		menuFichier.addSeparator();
    		menuFichier.add(itemQuitter);
    		
    		itemRond.addActionListener(new FormeListener());
    		itemCarre.addActionListener(new FormeListener());
    		
    		menuForme.add(itemRond);
    		menuForme.add(itemCarre);
    		
    		itemBleu.addActionListener(new CouleurListener());
    		itemRouge.addActionListener(new CouleurListener());
    		itemVert.addActionListener(new CouleurListener());
    		itemJaune.addActionListener(new CouleurListener());
    		itemNoir.addActionListener(new CouleurListener());
    		
    		menuCouleur.add(itemRouge);
    		menuCouleur.add(itemBleu);
    		menuCouleur.add(itemVert);
    		menuCouleur.add(itemJaune);
    		menuCouleur.add(itemNoir);
    		
    		itemPetit.addActionListener(new TailleListener());
    		itemMoyen.addActionListener(new TailleListener());
    		itemGrand.addActionListener(new TailleListener());
    		
    		menuTaille.add(itemPetit);
    		menuTaille.add(itemMoyen);
    		menuTaille.add(itemGrand);
    		
    		menuBar.add(menuFichier);
    		menuBar.add(menuForme);
    		menuBar.add(menuCouleur);
    		menuBar.add(menuTaille);
    		this.setJMenuBar(menuBar);
    	}
    	
    	class QuitterListener implements ActionListener
    	{
    		public void actionPerformed(ActionEvent e) {
    			System.exit(0);
    		}
    	}
    	
    	class FormeListener implements ActionListener
    	{
    		public void actionPerformed(ActionEvent e) {
    			String fr = ((JMenuItem) e.getSource()).getText();
    			pan.setForme(fr);
    		}
    	}
    	
    	class CouleurListener implements ActionListener
    	{
    		public void actionPerformed(ActionEvent e) {
    			try
    			{
    				if (e.getSource() == itemRouge)
    					pan.setCouleur("Rouge");
    				if (e.getSource() == itemBleu)
    					pan.setCouleur("Bleu");
    				if (e.getSource() == itemVert)
    					pan.setCouleur("Vert");
    				if (e.getSource() == itemJaune)
    					pan.setCouleur("Jaune");
    				if (e.getSource() == itemNoir)
    					pan.setCouleur("Noir");
    			}
    			catch (NullPointerException e1)
    			{
    				System.out.println("Err");
    			}
    		}
    	}
    	
    	class TailleListener implements ActionListener
    	{
    		public void actionPerformed(ActionEvent e) {
    			try
    			{
    				if (e.getSource() == itemPetit)
    					pan.setTaille(10);
    				if (e.getSource() == itemMoyen)
    					pan.setTaille(25);
    				if (e.getSource() == itemGrand)
    					pan.setTaille(50);
    			}
    			catch (NullPointerException e1)
    			{
    				System.out.println("Err");
    			}
    		}
    	}
    }
    

     Panneau.java

    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import java.util.ArrayList;
    
    import javax.swing.*;
    
    public class Panneau extends JPanel implements MouseListener, MouseMotionListener{
    	ArrayList<Point> points = new ArrayList<Point>();
    	boolean dejaEff = false;
    	
    	String forme = "Rond", couleur = "Rouge";
    	int taille = 50;
    	
    	public Panneau()
    	{
    		this.addMouseListener(this);
    		this.addMouseMotionListener(this);
    	}
    	
    	public void paintComponent(Graphics g)
    	{
    		g.setColor(Color.white);
    		g.fillRect(0, 0, this.getWidth(), this.getHeight());
    		
    		for (Point p : points)
    		{
    			g.setColor(p.getColor());
    			if (p.getForme().equals("Rond"))
    				g.fillOval(p.getPosX(), p.getPosY(), p.getTaille(), p.getTaille());
    			if (p.getForme().equals("Carré"))
    				g.fillRect(p.getPosX(), p.getPosY(), p.getTaille(), p.getTaille());
    		}
    	}
    	
    	public void setForme(String str)
    	{
    		forme = str;
    	}
    	public void setCouleur(String str)
    	{
    		couleur = str;
    	}
    	public void setTaille(int t)
    	{
    		taille = t;
    	}
    	
    	public void effacer()
    	{
    		points.removeAll(points);
    		this.repaint();
    	}
    	public void mouseClicked(MouseEvent arg0) {
    	}
    	public void mouseEntered(MouseEvent arg0) {
    	}
    	public void mouseExited(MouseEvent arg0) {
    	}
    	public void mousePressed(MouseEvent e) {
    		points.add(new Point(e.getX()-taille/2, e.getY()-taille/2, forme, couleur, taille));
    		repaint();
    	}
    	public void mouseReleased(MouseEvent arg0) {
    	}
    	public void mouseDragged(MouseEvent e) {
    		points.add(new Point(e.getX()-taille/2, e.getY()-taille/2, forme, couleur, taille));
    		repaint();
    	}
    	public void mouseMoved(MouseEvent arg0) {
    	}
    }
    

    Point.java

    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    
    import javax.swing.*;
    
    public class Point {
    	private int posX;
    	private int posY;
    	private String forme, strClr;
    	private Color clr;
    	private int taille;
    	
    	public Point(int x, int y, String frm, String sclr, int t)
    	{
    		posX = x;
    		posY = y;
    		forme = frm;
    		taille = t;
    		strClr = sclr;
    		couleur();
    	}
    	
    	public int getPosX() {
    		return posX;
    	}
    
    	public int getPosY() {
    		return posY;
    	}
    	
    	public Color getColor() {
    		return clr;
    	}
    	
    	public int getTaille() {
    		return taille;
    	}
    	
    	public String getForme() {
    		return forme;
    	}
    
    	private void couleur()
    	{
    		if (strClr.equals("Blanc"))
    			clr = Color.white;
    		if (strClr.equals("Bleu"))
    			clr = Color.blue;
    		if (strClr.equals("Gris"))
    			clr = Color.gray;
    		if (strClr.equals("Rouge"))
    			clr = Color.red;
    		if (strClr.equals("Vert"))
    			clr = Color.green;
    		if (strClr.equals("Jaune"))
    			clr = Color.yellow;
    		if (strClr.equals("Noir"))
    			clr = Color.black;
    	}
    }
    

     Et le main.java ne fais que lancer la fenetre.

    Maintenant voici ma console :

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at javax.swing.LayoutComparator.compare(Unknown Source)
    	at javax.swing.LayoutComparator.compare(Unknown Source)
    	at java.util.TimSort.countRunAndMakeAscending(Unknown Source)
    	at java.util.TimSort.sort(Unknown Source)
    	at java.util.Arrays.sort(Unknown Source)
    	at java.util.ArrayList.sort(Unknown Source)
    	at java.util.Collections.sort(Unknown Source)
    	at javax.swing.SortingFocusTraversalPolicy.enumerateAndSortCycle(Unknown Source)
    	at javax.swing.SortingFocusTraversalPolicy.getFocusTraversalCycle(Unknown Source)
    	at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(Unknown Source)
    	at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(Unknown Source)
    	at javax.swing.SortingFocusTraversalPolicy.getDefaultComponent(Unknown Source)
    	at java.awt.FocusTraversalPolicy.getInitialComponent(Unknown Source)
    	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    	at java.awt.EventQueue.access$500(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.SequencedEvent.dispatch(Unknown Source)
    	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    	at java.awt.EventQueue.access$500(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    

    Voila je ne sais pas quoi faire ni d'ou elle viens, merci de bien vouloir m'aider

    Cordialement,

    Arbre bleu



    • Partager sur Facebook
    • Partager sur Twitter

    [Ardoise magique] Erreur d'origine inconue

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown