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

Composants Java Discussion :

Jbuttons & Carte


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Par défaut Jbuttons & Carte
    Bonjour,

    Je viens vous demander aide & conseils ici à propos de deux petites choses..

    Pour un 'jeu' ( coder pour apprendre ), j'ai une grille selon x-y où je stocke des objets ( les unités de jeu ).

    D'un point de vue graphique, j'ai une JPanel ( remplis d'une texture ). . L'enjeu étant de représenter ses unités de jeu et de pouvoir les selectionner. Premiere chose à laquelle j'ai pensé, ca a été de faire une grille ( GridLayout ) de JButton avec icone ( genre icone de Soldat ) car les JButton sont aisé à controlé pour le clique. J'ai étendu les JButton pour les rendre transparent, malheuresement, deux soucis : 1/ Les JButton sont entiérement transparent, pas d'icône donc ! 2/ C'est pas vraiment optimiser pour une grande grille de jeu, autant de JButton.. Lent..

    • Avez vous une idée quant à ma carte ? ( Autre solution que les JButtons ? <=> Comment savoir sur quelle unité à t'on cliquer ? )
    • Et/Ou savez vous comment rendre le JButton transparent tout en conservant la visibilité de l'icône ?



    Merci !


    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
    package army.gui;
     
    import java.awt.AlphaComposite;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
     
    import javax.swing.Action;
    import javax.swing.Icon;
    import javax.swing.JButton;
     
    public class JTransparentButton extends JButton {
     
    	public JTransparentButton() {
    		super();
    		this.setOpaque(false);
    	}
     
    	public JTransparentButton(Action a) {
    		super(a);
    		this.setOpaque(false);
    	}
     
    	public JTransparentButton(Icon icon) {
    		super(icon);
    		this.setOpaque(false);
    	}
     
    	public JTransparentButton(String text, Icon icon) {
    		super(text, icon);
    		this.setOpaque(false);
    	}
     
    	public JTransparentButton(String text) {
    		super(text);
    		this.setOpaque(false);
    	}
     
    	public void paint(Graphics g) { 
    	    Graphics2D g2 = (Graphics2D) g.create(); 
    	    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.0f)); 
    	    super.paint(g2); 
    	    g2.dispose();
    	}
     
    }

  2. #2
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 60
    Par défaut
    Bonjour,

    A la place des JButton tu peux mettre n'importe quel JComponent auquel tu associes un MouseListener, peut-être un JPanel plutôt ?

    Et à la place d'un GridLayout où tu dois avoir des centaines voire des milliers de lignes, tu peux soit faire du positionnement absolu, ou regarder du côté de GridBagLayout. Je te conseillerai plus le positionnement absolu dans ton projet.

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Par défaut
    Merci beaucoup ! Je vais étudier la question !

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Plutôt que redéfinir la méthode paint, il est beaucoup plus viable d'enchainer les appels suivants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    button.setOpaque(false);
    button.setContentAreaFilled(false);
    button.setBorderPainted(false);
    button.setFocusPainted(false);
    Cela tombe pile poil dans ton besoin de n'afficher qu'une icône.

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/04/2007, 16h52
  2. [DX 9][C++]Plein ecran + carte graphique
    Par delire8 dans le forum DirectX
    Réponses: 2
    Dernier message: 09/05/2003, 20h11
  3. [Turbo Pascal] [MS-DOS] Lire la Mac-address de la carte réseau
    Par toctoc dans le forum Turbo Pascal
    Réponses: 14
    Dernier message: 21/02/2003, 22h08
  4. Accès au port 700h pour une carte d'interface
    Par haypo dans le forum Matériel
    Réponses: 3
    Dernier message: 07/11/2002, 11h30

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