Partage
  • Partager sur Facebook
  • Partager sur Twitter

JPanel dans JApplet et problème d'affichage

    27 décembre 2009 à 17:58:25

    Bonsoir,

    J'ai codé un petit jeu en java et j'essaie maintenant de l'incorporer à une page html au moyen d'un JApplet.

    Le jeu semble fonctionner mais le JPanel contenu dans mon JApplet ne s'affiche pas correctement.
    Je n'arrive pas à l'afficher d'une autre taille que 200*200 alors qu'il devrait être en 400*400.

    Voici le code, je sais qu'il y a d'autres moyens plus adaptés pour faire plus simplement ce mini-jeu mais je suis parti la dessus et j'y reste. :p

    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import java.util.Date;
    
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.Timer;
    
    public class Rectangle extends JPanel {
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	private int largeur[] = new int[5];
    	private int hauteur[] = new int[5];
    	private int posX[] = new int[5];
    	private int posY[] = new int[5];
    	private int posXinit[] = new int[5];
    	private int posYinit[] = new int[5];
    	boolean clique = false;
    	
    	public Rectangle() {
    	
    		for(int i =0; i<largeur.length; i++)
    		{
    			this.largeur[i] = 30;
    			this.hauteur[i] = 30;
    			
    			this.posX[i] = 40;
    			this.posY[i] = 80;
    			
    			this.posXinit[i] = this.posX[i];
    			this.posYinit[i] = this.posY[i];
    		}
    		this.addMouseListener(new MouseListener() {
    			
    			@Override
    			public void mouseClicked(MouseEvent arg0) {
    				// TODO Auto-generated method stub
    				if(arg0.getX() >= getPosX(4) && arg0.getX() <= getPosX(4)+getLargeur(4) && arg0.getY() >= getPosY(4) && arg0.getY() <= getPosY(4)+getHauteur(4)) {
    					if(!clique) {
    						Th t =  new Th();
    						t.start();
    						clique = true;
    					}
    				}
    			}
    			@Override
    			public void mouseEntered(MouseEvent arg0) {
    				// TODO Auto-generated method stub
    				
    			}
    			@Override
    			public void mouseExited(MouseEvent arg0) {
    				// TODO Auto-generated method stub
    				
    			}
    			@Override
    			public void mousePressed(MouseEvent arg0) {
    				// TODO Auto-generated method stub
    				
    			}
    			@Override
    			public void mouseReleased(MouseEvent arg0) {
    				// TODO Auto-generated method stub
    				
    			}
    		});
    		this.addMouseMotionListener(new MouseMotionListener() {
    					
    			@Override
    			public void mouseMoved(MouseEvent e) {
    				// TODO Auto-generated method stub
    				setPosX(e.getX()-getLargeur(4)/2, 4);
    				setPosY(e.getY()-getHauteur(4)/2, 4);
    			}
    			
    			@Override
    			public void mouseDragged(MouseEvent e) {
    				// TODO Auto-generated method stub
    				
    			}
    		});	
    	}
    	public Rectangle(int largeur[], int hauteur[], int posX[], int posY[]) {
    		
    		for(int i=0; i<this.largeur.length; i++) {
    		
    			this.largeur[i] = largeur[i];
    			this.hauteur[i] = hauteur[i];
    			
    			this.posX[i] = posX[i];
    			this.posY[i] = posY[i];
    			
    			this.posXinit[i] = this.posX[i];
    			this.posYinit[i] = this.posY[i];
    			
    			this.addMouseListener(new MouseListener() {
    				
    				@Override
    				public void mouseClicked(MouseEvent arg0) {
    					// TODO Auto-generated method stub
    					if(arg0.getX() >= getPosX(4) && arg0.getX() <= getPosX(4)+getLargeur(4) && arg0.getY() >= getPosY(4) && arg0.getY() <= getPosY(4)+getHauteur(4)) {
    						if(!clique) {
    							Th t =  new Th();
    							t.start();
    							clique = true;
    						}
    					}
    				}
    				@Override
    				public void mouseEntered(MouseEvent arg0) {
    					// TODO Auto-generated method stub
    					
    				}
    				@Override
    				public void mouseExited(MouseEvent arg0) {
    					// TODO Auto-generated method stub
    					
    				}
    				@Override
    				public void mousePressed(MouseEvent arg0) {
    					// TODO Auto-generated method stub
    					
    				}
    				@Override
    				public void mouseReleased(MouseEvent arg0) {
    					// TODO Auto-generated method stub
    					
    				}
    			});
    			this.addMouseMotionListener(new MouseMotionListener() {
    							
    				@Override
    				public void mouseMoved(MouseEvent e) {
    					// TODO Auto-generated method stub
    					setPosX(e.getX()-getLargeur(4)/2, 4);
    					setPosY(e.getY()-getHauteur(4)/2, 4);
    				}
    				
    				@Override
    				public void mouseDragged(MouseEvent e) {
    					// TODO Auto-generated method stub
    					
    				}
    			});			
    		}
    	}
    	
    	public int getLargeur(int i) {
    		
    		return this.largeur[i];
    	}
    	public int getHauteur(int i) {
    
    		return this.hauteur[i];
    	}
    	public int getPosX(int i) {
    		
    		return this.posX[i];
    	}
    	public int getPosY(int i) {
    		
    		return this.posY[i];
    	}
    	public int getPosInitX(int i) {
    		
    		return this.posXinit[i];
    	}
    	public int getPosInitY(int i) {
    		
    		return this.posYinit[i];
    	}
    	
    	public void setLargeur(int largeur, int i) {
    
    		this.largeur[i] = largeur;
    	}
    	public void setHauteur(int hauteur, int i) {
    		
    		this.hauteur[i] = hauteur;
    	}
    	public void setDimension(int largeur, int hauteur, int i) {
    		
    		this.largeur[i] = largeur;
    		this.hauteur[i] = hauteur;
    	}
    	public void setPosX(int posX, int i) {
    		
    		this.posX[i] = posX;
    	}
    	public void setPosY(int posY, int i) {
    		
    		this.posY[i] = posY;
    	}
    	public void setCoord(int posX, int posY, int i) {
    		
    		this.posX[i] = posX;
    		this.posY[i] = posY;
    	}
    	
    	public void paintComponent(Graphics g) {
    		
    		g.setColor(Color.white);
    		g.fillRect(0, 0, getWidth(), getHeight());
    		g.setColor(Color.GREEN);
    		for(int i=0; i<largeur.length; i++) {
    			if(i==largeur.length-1) 
    				g.setColor(Color.RED);
    			g.fillRect(posX[i], posY[i], largeur[i], hauteur[i]);
    		}
    	}
    	
    	class Th extends Thread implements MouseMotionListener {
    
    		private int pas = 10;
    		
    		public void mouseDragged(MouseEvent e) {
    			// TODO Auto-generated method stub
    			
    		}
    		@Override
    		public void mouseMoved(MouseEvent e) {
    			
    			posX[4] = e.getX()-largeur[4]/2;
    			posY[4] = e.getY()-hauteur[4]/2;
    		}
    		
    		private boolean continuer() {
    			for(int i=0; i<largeur.length-1;i++) {
    				
    				
    				if(posX[4]<=0 || posX[4]+largeur[4] >= getWidth() || posY[4]+hauteur[4] >= getHeight() || posY[4] <= 0)  {
    					return false;
    				}
    				if(((posX[4]+largeur[4] >= posX[i]) && (posX[4] <= posX[i]+largeur[i]))  && ((posY[4] >= posY[i] && posY[4] <= posY[i]+hauteur[i]) || (posY[4]+hauteur[4] >= posY[i] && posY[4]+hauteur[4] <= posY[i]+hauteur[i]))) {
    					return false;
    				}
    				if(((posY[4]+hauteur[4] >= posY[i]) && (posY[4] <= posY[i]+hauteur[i])) && ((posX[4] >= posX[i] && posX[4] <= posX[i] +largeur[i])  || (posX[4]+largeur[4] >= posX[i] && posX[4]+largeur[4] <= posX[i]+largeur[i]))) {
    					return false;
    				}
    				
    			}
    			return true;
    		}
    		
    		public void run() {
    		
    			boolean backX[] = {true, false, true, false};
    			boolean backY[] = {false, true, false, true};
    			Date debut = new Date();
    			Timer timer = createTimer();
    			timer.start();
    			while(continuer()) {
    
    				for(int i=0; i<largeur.length-1; i++) {
    					if(getPosX(i) < 1)
    						backX[i] = true;
    					else if(getPosX(i) > getWidth() - largeur[i])
    						backX[i] = false;
    					if(getPosY(i) < 1)
    						backY[i] = true;
    					else if(getPosY(i) > getHeight() - hauteur[i])
    						backY[i] = false;
    					if(backX[i])
    						setPosX(getPosX(i)+1, i);
    					else
    						setPosX(getPosX(i)-1, i);
    					if(backY[i])
    						setPosY(getPosY(i)+1, i);
    					else
    						setPosY(getPosY(i)-1, i);
    
    					repaint();
    				}
    	        	try {
    	                Thread.sleep(pas);
    	        	} catch (InterruptedException e) {
    	        		e.printStackTrace();
    	        	}
    			}
            	Date fin = new Date();
            	
            	JOptionPane.showMessageDialog(null, "Temps total : " +(fin.getTime() - debut.getTime())/1000 + "." + (fin.getTime() - debut.getTime())%1000 +"s");
            	clique = false;
            	
            	for(int i=0; i<5;i++) {
            		setPosX(getPosInitX(i), i);
            		setPosY(getPosInitY(i), i);
            		repaint();
            	}
            	
    		}
    		private Timer createTimer() {
    			ActionListener action = new ActionListener() {
    				
    				@Override
    				public void actionPerformed(ActionEvent arg0) {
    					// TODO Auto-generated method stub
    					if(pas>1) {
    						pas--;
    					}
    				}
    			};
    			return new Timer(3000, action);
    		}
    		
    	}
    }
    

    import java.awt.BorderLayout;
    
    import javax.swing.JApplet;
    
    public class Fenetre extends JApplet {
    	
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	private Rectangle re;
    	
    	public void init() {
    		
    		//this.setTitle("Jeu du carré rouge");
    		this.setSize(400, 400);
    		//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		//this.setLocationRelativeTo(null);
    
    		int largeur[] = {100, 40, 60, 50, 50};
    		int hauteur[] = {40, 60, 50, 45, 50};
    		int posX[] = {10, this.getWidth()-2*40, 10, this.getWidth()-2*50, (this.getWidth()-50)/2};
    		int posY[] = {10, 10, this.getHeight()-2*50, this.getHeight()-2*45, (this.getHeight()-50)/2};
    		
    
    		this.getContentPane().add(new Rectangle(largeur, hauteur, posX, posY), BorderLayout.CENTER);
    		//initMenu();
    		
    		this.setVisible(true);
    		
    	}
    }
    


    Voilà ce que ça donne chez moi, et ce que ça devrait donner

    Dans un JApplet
    Dans un JFrame
    • Partager sur Facebook
    • Partager sur Twitter

    JPanel dans JApplet et problème d'affichage

    × 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