IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[débutant] taille jPanel et image sur jbutton


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut [débutant] taille jPanel et image sur jbutton
    Bonjour,
    J'essaye de créer un démineur et je recontre quelques problemes pour l'affichage..

    J'aimerais que la taille de ma fenetre se calcule en fonction du nombre de cases qu'il y aura en largeur et en hauteur. Cases de dimension (20,20).
    Donc j'ais
    fhaut= 20(pour taille de mes cases)*nbre de cases en hauteur.
    flong= 20(pour taille de mes cases)*nbre de cases en largeur.
    Et je dimensionne mes jpanel en fonction de ces 2 variables, ce qui me semble fonctionne correctement.

    Mais lorsque j'affiche, la taille de mes boutons n'est pas de 20/20, mais est bien trop large et moin haute.. Ce qui fait que je n'ai pas un beau petit quadrillage de cases les unes a coté des autres comme j'aimerais dans mon jPanelCentre.
    J'essaye en meme temps que mes boutons prennent la forme d'une image de "bonne" dimension (20/20), mais j'obtiens des jbutton "classique".

    Je suppose donc que mon probleme vient uniquement donc de la taille des mes boutons, qui ne veulent pas prendre la taille que je souhaite..



    demineur.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
     
            private JPanel jPanelNord;
    	private JPanel jPanelSud;
    	private JLabel jLabelTitre;
    	private JPanel jPanelCentre;
     
    	public static void main(String[] args) {
    		initiali inst = new initiali();
    		inst.setVisible(true);
    	}
     
    	public demineur(int[][] surf,int x, int y) {
    		int[][]tab=surf;
    		int larg=x;
    		int hauteur=y;
    		int nbrecases= larg*hauteur;
    		int flarg=larg*20;
    		int fhaut=hauteur*20;
    		Case[][] cases = new Case[hauteur][larg];
    		setVisible(true);
    		try {
    			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    			this.setMinimumSize(new java.awt.Dimension(flong+40,flarg));
    			{
    				jPanelNord = new JPanel();
    				getContentPane().add(jPanelNord, BorderLayout.NORTH);
    				jPanelNord.setPreferredSize(new java.awt.Dimension(fhaut+20, 20));
    				{
    					jLabelTitre = new JLabel();
    					jPanelNord.add(jLabelTitre);
    					jLabelTitre.setText("Démineur");
    					jLabelTitre.setPreferredSize(new java.awt.Dimension(62, 15));
    				}
     
    			}
    			{
    				jPanelSud = new JPanel();
    				getContentPane().add(jPanelSud, BorderLayout.SOUTH);
    				jPanelSud.setPreferredSize(new java.awt.Dimension(fhaut+20, 20));
    			}
    			{
     
     
    				jPanelCentre = new JPanel();
    				for (int i = 0; i < hauteur; i++) {
    				      for (int j = 0; j < larg; j++) {
    				    	  Case bouton = new Case(i, j);	           
    				    	  cases[i][j] = bouton;
    				    	  jPanelCentre.add(bouton);
     
    				      }
    				    }
     
    				getContentPane().add(jPanelCentre, BorderLayout.CENTER);
    				jPanelCentre.setPreferredSize(new java.awt.Dimension(fhaut,flarg));
     
     
    			}
    			pack();
    			setSize(fhaut,flarg);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    case.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    public class Case extends JButton {
     
     
    	public Case(int i,int j) {
    		int posx=i;
    		int posy=j;
    		//setBackground(Color.white);
    		setSize(20,20);
    		setIcon(new ImageIcon("/src/nonvisite.jpg"));
    	}
    }
    Si quelqu'un pouvait éclairer ma lanterne

    Merci d'avance.

  2. #2
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    au lieu de faire un setSize sur tes boutons, tu devrais peut-être initiliaser la preferred size.
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par xixi31 Voir le message
    au lieu de faire un setSize sur tes boutons, tu devrais peut-être initiliaser la preferred size.
    merci pour l'aide.
    La taille de mes boutons afficher est maintenant correcte, mais mes problemes persistent quand meme.


    J'arrive maintenant a avoir également ma matrice en ajoutant un GridLayout et je m'etais aussi emmeler les pinceaux avec mes variables largeurs et hauteur.

    Mais cela marche uniquement quand je fais 10/10 en largeur et longueur..
    sinon il me met une erreur

    java.lang.ArrayIndexOutOfBoundsException: 8
    at demineur.<init>(demineur.java:89)
    at dem.main(dem.java:21)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    jPanelCentre = new JPanel(new GridLayout(larg,hauteur));
     
     
     
    				for (int i = 0; i < larg; i++) {
    				      for (int j = 0; j < hauteur; j++) {
    				    	  Case bouton = new Case(i, j);	        		        			    	  cases[i][j] = bouton;                 //ligne 89
    				    	  jPanelCentre.add(bouton);
     
    				      }
    				    }
     
    				getContentPane().add(jPanelCentre, BorderLayout.CENTER);
    				jPanelCentre.setPreferredSize(new java.awt.Dimension(flarg,fhaut));

  4. #4
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    déjà, il vaut mieux faire l'appel à setVisible(true) tout à la fin. ensuite, tu fais appel à un pack() puis à un setSize, or, le pack est censé appliquer une taille préférentielle à ta Frame en fonction de ce qu'elle contient dont, tu n'aurait sans doute pas besoin de t'embêter à déterminer la hauteur et largueur souhaitée.
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par xixi31 Voir le message
    déjà, il vaut mieux faire l'appel à setVisible(true) tout à la fin. ensuite, tu fais appel à un pack() puis à un setSize, or, le pack est censé appliquer une taille préférentielle à ta Frame en fonction de ce qu'elle contient dont, tu n'aurait sans doute pas besoin de t'embêter à déterminer la hauteur et largueur souhaitée.
    Merci beaucoup pour l'aide et les conseils, en effet mon pack(); me suffit .
    Et pour mon probleme qu'il ne fonctionnait que en 10/10, c'est aussi résolu, j'avais encore inversé 2 variables^^.

    Il ne me reste plus que mon probleme d'affichage d'image..

  6. #6
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    Il ne me reste plus que mon probleme d'affichage d'image..
    c'est-à-dire?
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par xixi31 Voir le message
    c'est-à-dire?

    Lorsque je crée mes bouttons, j'aimerais qu'il prenne la forme d'une image.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setIcon(new ImageIcon("/src/nonvisite.jpg"));
    mais ca ne fonctionne pas..

  8. #8
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    tu as ton icone sur les boutons ou pas?
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par xixi31 Voir le message
    tu as ton icone sur les boutons ou pas?
    j'ai juste des jbutton classique qui s'affiche de la taille souhaitée.

  10. #10
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    la facon de récupérer l'icone est un peu suspect,

    essaie :

    "src/nonvisite.jpg"
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

Discussions similaires

  1. Problème affichage image sur JButton
    Par Alba.1337 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 28/06/2012, 10h39
  2. influence du forçage de la taille d'un image sur l'affichage d'une page web
    Par cyreel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/05/2011, 14h16
  3. image sur JButton
    Par benderSobre dans le forum Composants
    Réponses: 2
    Dernier message: 18/06/2008, 13h33
  4. Probleme image sur JButton
    Par LordBob dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/09/2006, 16h26
  5. image sur JButton (swing)
    Par loic_86 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 16/01/2006, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo