64*64 petites boutons dans une interface, est il possible?!?!??

[Résolu]
Signaler
Messages postés
28
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
25 novembre 2011
-
Messages postés
28
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
25 novembre 2011
-
Bonjour à tous,

J ai essayée de développer une interface graphique contenant 64*64 bouton mais ça dépasse la taille limite
«The code of constructor surface() is exceeding the 65535 bytes limit»

Bon l'idée c'est de dessiner un circuit en cliquant aux boutons que vont changes 2 couleur
Ya t' il d'autre solution SVPPPPPPPPP c urgent


merci d'avance

26 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Il te reste à écrire le mouseListener qui ajoute un point ou en supprime un dans la liste en fonction de la position du click contenue dans le mouseEvent.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Et surement un peu adapter ca a ce que tu veux parce que ca ne doit pas tout a fait coller je pense.

Bon courage
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
J'ai oublié une ligne dans le mouseclicked, il faut dire au panel de se redessiner et donc ajouter panel.repaint();

public void mouseClicked(MouseEvent e){
panel.addPoint(e.getX(), e.getY(), Color.blue);
panel.repaint();
 	}

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Tu as un problème dans ta metode main
public static void main(String args[]) {
    JFrame frame = new JFrame("interface TWA");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //Declaration du panel	   
    Panel panel = new Panel();
            //Ajout du mouselistener au panel
            panel.addMouseListener(new ListenerPanel(panel));
    frame.add(panel);
    frame.setSize(500, 500);
    frame.setVisible(true);
  }


Pour ta fonction doubleToInt un cast suffit :
double d = 12.0f;
int a = (int)d;
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Il y a une solution un peu archaïque qui repose sur deux JPanel

Le panel 1 a un listener qui lorsuq'on clique sur un point pose à cet endroit un panel2 de taille getWidh()/64 et getHeight()/64

Le panel 2 a un listener qui le supprime quand on le clique
Messages postés
28
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
25 novembre 2011

Merci Mr Julien39

Mais faut-il avoir 64*64 panels, non ? …. Donc même problème
Voila par une image, c que je veux faire en 64*64



Après, pour chaque composants (diélectrique,metal,sourcee)je veux générer une matrice pour chaque composants

Exemple
------|00111111100|
Metal=|00001000000|
------|00011110000|
------|00001110000|
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Oui c'est vrai, même si au départ tu n'en n'a pas 64*64 mais à terme, c'est ce qui se passera.

Tu n'as plus qu'à surcharger paintComponent() sur un JPanel pour dessiner des carrés.

Attends 5 minutes, je te fais ca
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Ca ne fait pas bien rêver comme code mais bon :

private Panel extends JPanel {

private List points;
private List<Color> couleurs;

public Panel(){
super();
points = new ArrayList();
couleurs = new ArrayList<Color>();
}

public void addPoint(int x, int y, Color couleur){
points.add(new Point(x, y));
couleurs.add(couleur);
}

public void paintComponent(Graphics g){
super.paintComponent(g);
//Il faudra t'assurer que width=height
int tailleCarre = getWidth()/64;
for(int i=0; i<points.size(); i++){
g.setColor(couleurs.get(i));
g.fillRect(
point.get(i).getX()-tailleCarre/2,
point.get(i).getY()-tailleCarre/2,
tailleCarre,
tailleCarre
);
}

}

}
Messages postés
28
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
25 novembre 2011

merciiii
i m waiting
Messages postés
28
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
25 novembre 2011

merci infiniment
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
De rien, si tu as d'autres questions, ouvre un nouveau sujet
Messages postés
28
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
25 novembre 2011

je suis débutant en java....

pouvez vous monsieur commentez votre code ?

je vous remercie
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Pour comprendre ce code, il faut savoir que tout ce qui est dessiné dans un JPanel est dessiné avec la méthode paintComponent(Graphics g). Quand tu déplaces le panel, c'est cette méthode qui est appelée.

Quand tu fais une classe qui étent JPanel (extends), alors tu peux redéfinir toutes les méthodes associées au JPanel (dont celle ci).

Ce qui se passe ici peut se traduire par cette pharse : "Je définis un JPanel particulier qui possède une liste de points et une liste de couleurs et qui les dessines comme je l'indique dans paintComponent"


public Panel extends JPanel {
/**La liste des coordonnées des carrés à dessiner*/
private List points;
/**La liste des couleurs associées aux points*/
private List<Color> couleurs;

/**
  * Constructeur
  */
public Panel(){
super();
//Initialisation des listes
points = new ArrayList();
couleurs = new ArrayList<Color>();
}

/**
  * Méthode qui permet d'ajouter un nouveau point
  * appelée dans le mouselistener
  */
public void addPoint(int x, int y, Color couleur){
points.add(new Point(x, y));
couleurs.add(couleur);
}

/**
  * Méthode qui décrit la façon de dessiner les carres
  */
public void paintComponent(Graphics g){
//On dessine le fond normalement
super.paintComponent(g);
//Taille d'un carre (pour en avoir 64*64 dans le panel)
int tailleCarre = getWidth()/64;
for(int i=0; i<points.size(); i++){
//Indique qu'on dessine le carre d'une certaine couleur
g.setColor(couleurs.get(i));
//dessin du carré
g.fillRect(
point.get(i).getX()-tailleCarre/2,//x
point.get(i).getY()-tailleCarre/2,//y
tailleCarre,//largeur
tailleCarre//hauteur
);
}

}

}

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Dis moi ce que tu ne comprends pas
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Le mouseListener, tu vois ce que c'est ?
Messages postés
28
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
25 novembre 2011

pour le mouseListener nn ... po encore
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
MouseListener est une interface qui te permet de définir des comportement en cas d'action de l'utilisateur sur la souris

Ca te permet de définir ce qui se passe quand tu vas cliquer sur ton Panel.

Attends un moment, je te fais un code
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
public class ListenerPanel implements MouseListener {

private Panel panel;

public ListenerPanel(Panel panel){
this.panel = panel;
}

/**
  * fonction appellee quand on clique sur le Panel
  */
public void mouseClicked(MouseEvent e){
panel.addPoint(e.getX(), e.getY(), Color.blue);
 	}

/**
  * Invoked when the mouse enters a component.
  */
public void mouseEntered(MouseEvent e){

}

/**
  * Invoked when the mouse exits a component.
  */
public void mouseExited(MouseEvent e){
}
        
/**
  *Invoked when a mouse button has been pressed on a component.
  */
public void mousePressed(MouseEvent e){

}
        
/**
  * Invoked when a mouse button has been released on a component.
  */
public void mouseReleased(MouseEvent e){

}

}


Voilà la doc sur MouseListener http://download.oracle.com/javase/1.3/docs/api/java/awt/event/MouseListener.html

et sur MouseEvent http://download.oracle.com/javase/1.4.2/docs/api/java/awt/event/MouseEvent.html
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Et dans Panel, tu ajoutes ca :


public Panel extends JPanel {
/**La liste des coordonnées des carrés à dessiner*/
private List points;
/**La liste des couleurs associées aux points*/
private List<Color> couleurs;

/**
  * Constructeur
  */
public Panel(){
super();
//Initialisation des listes
points = new ArrayList();
couleurs = new ArrayList<Color>();
//On définit le listener sur le Panel (ce qui va se passer lors d'un click
addMouseListener(new ListenerPanel(this));
}

/**
  * Méthode qui permet d'ajouter un nouveau point
  * appelée dans le mouselistener
  */
public void addPoint(int x, int y, Color couleur){
points.add(new Point(x, y));
couleurs.add(couleur);
}

/**
  * Méthode qui décrit la façon de dessiner les carres
  */
public void paintComponent(Graphics g){
//On dessine le fond normalement
super.paintComponent(g);
//Taille d'un carre (pour en avoir 64*64 dans le panel)
int tailleCarre = getWidth()/64;
for(int i=0; i<points.size(); i++){
//Indique qu'on dessine le carre d'une certaine couleur
g.setColor(couleurs.get(i));
//dessin du carré
g.fillRect(
point.get(i).getX()-tailleCarre/2,//x
point.get(i).getY()-tailleCarre/2,//y
tailleCarre,//largeur
tailleCarre//hauteur
);
}

}

}


Messages postés
28
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
25 novembre 2011

merciiii infiniment Mr Julien de votre effort ^_^

c très compliquer pour moi ....

il me faut des connaissance de base sur java ...
po grave je essayerai ak VB