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

NetBeans Java Discussion :

Interface avec swing


Sujet :

NetBeans Java

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut Interface avec swing
    Bonjour à tous, je cherche quelque piste pour implémenter un logiciel.


    Serait il possible avec netbeans d'implémenter une interface graphique (pour le jeu de go) avec la librairie swing.

    Voilà à quoi doit ressembler le rendu graphique final.


    Nom : QGo.png
Affichages : 419
Taille : 887,4 Ko


    Je cherche surtout des pistes; à la base j'avais pensé à implémenter sous la forme d'un tableau; mais c'est pas bon car je ne devrais pas jouer dans les cellules mais plutôt sur les intersections de cellules.


    Du coup je cherche des infos sur les outils à utiliser pour obtenir ce genre de rendu; est ce possible avec swing ? Si ce n'est pas le cas du coté de quelle librairie devrais je regarder ?


    Merci à vous !

  2. #2
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 654
    Points
    1 654
    Par défaut
    Toute ce qu'il y a autour du panel du jeu est largement possible avec Swing à grand coup de panel/layout (ou wysiwyg avec netbean). Après, c'est vrai que pour la fenêtre du jeu, faut voir...

    Après, je sais que la librairie JavaFX est beaucoup plus puissante que Swing mais je n'ai jamais essayé.
    Si la réponse vous convient, un petit ça encourage.
    Avant tout nouveau post, pensez à : la FAQ, Google et la fonction Recherche
    Si vous devez poster, pensez à: Ecrire en français, la balise [CODE] (#) et surtout

  3. #3
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Salut,

    Citation Envoyé par Amnael Voir le message
    Je cherche surtout des pistes; à la base j'avais pensé à implémenter sous la forme d'un tableau; mais c'est pas bon car je ne devrais pas jouer dans les cellules mais plutôt sur les intersections de cellules.
    Et si tu mets tes intersections du plateau dans des cellules de tableau, ça fonctionne très bien...

    Aucun soucis pour faire ca avec swing... Mais rien n'empeche de le faire en javafx... Ou avec une api de jeu 2D...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Citation Envoyé par plegat Voir le message
    Salut,



    Et si tu mets tes intersections du plateau dans des cellules de tableau, ça fonctionne très bien...

    Aucun soucis pour faire ca avec swing... Mais rien n'empeche de le faire en javafx... Ou avec une api de jeu 2D...

    C'est vrai que je n'y avais pas pensé à celle là; je peux faire en sorte que mon tableau soit un tableau d'intersection !


    Du coup il ne me suffirait que de faire un rendu "potable" qui ressemble à un plateau...pas sûr que j'en sois capable mais au moins je sais ou me diriger.


    Sinon ne serait ce pas plus simple de directement travailler sur une image de plateau plutôt que d'implémenter un rendu de ce genre ? Parce que franchement j'ai du mal à voir comment je peux donner cette apparence à un tableau à partir de rien =)

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,
    Citation Envoyé par Amnael Voir le message
    Sinon ne serait ce pas plus simple de directement travailler sur une image de plateau plutôt que d'implémenter un rendu de ce genre ? Parce que franchement j'ai du mal à voir comment je peux donner cette apparence à un tableau à partir de rien =)
    Oui, prévois une image de plateau vide. Que tu dessines dans le fond d'un JPanel en redéfinissant paint(Graphics) en activant le double-buffering. Tu ajouteras au fur et à mesure des placements de pions des images d'intersection avec pion noir ou pion blanc (2 images nécessaires). C'est déjà un bon début. Tu verras ensuite s'il y a des problèmes de lenteurs pour mettre à jour l'image (en particulier en cas de prise de grande zone) ; une piste peut-être : prévoir des images avec des groupes de pions (par 4 (2x2) et par 9(9x9), par exemple, ce qui limite les combinaisons, mais permet un remplissage de grande zone plus rapide).

    Si tu as besoin de gérer un zoom, tu peux prévoir une image dans sa taille la plus grande (sans exagérer le niveau de zoom) : ainsi pour le niveau de zoom le plus important, tu auras la plus grand précision, et tu pourras la réduire. En fonction des résultats de rendu, et de tes exigences, tu pourras prévoir des images à différents niveaux de zoom (les niveaux interméidaires seront calculées en dynamique par transformées affines, et à certains niveaux de zoom, tu basculeras sur une image dans la bonne résolution, pour limiter les déformations dues aux algorithmes de rescaling (ceux de base de Java ne sont pas les meilleurs - il existe des bibliothques qui font mieux).

    Idem pour rendu des chiffres : tu verras de visu (surtout sur les petites échelles) si ça te convient ou pas, ou si tu préfères faire un rendu dynamique par affichage de String par la suite (qui sera plus lent de toute manière).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Du coup pour placer l'icon du plateau dans le fond du jpanel il y aura une méthode en particulier ? Du genre un setBackground sur le panel ?


    Parce que si je mets l'image en fond il faut que le tableau d'intersection puisse coïncider avec l'image de fond aussi et là ça commence à devenir chaud chaud^^

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Amnael Voir le message
    Du coup pour placer l'icon du plateau dans le fond du jpanel il y aura une méthode en particulier ? Du genre un setBackground sur le panel ?
    Non, pas en SWING. Mais c'est juste, à la base (parce qu'on peut complexifier selon les besoins (si tu veux gérer du zoom par exemple)), quelques lignes de code

    Voici le code base pour afficher une image dans le fond d'un panel, dont la taille est celle de l'image :
    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
    public class ImagePanel extends JPanel {
     
        private Image image;
    	private Dimension size;
     
    	public ImagePanel(BufferedImage image) {
    		Objects.requireNonNull(image);
        	this.image=image;
        	this.size = new Dimension(image.getWidth(),image.getHeight());
        }
     
    	@Override
    	public Dimension getPreferredSize() {
    		return size;
    	}
     
        @Override
    	protected void paintComponent(Graphics g) {
    		g.drawImage(image, 0, 0, size.width, size.height, this);
    		super.paintComponent(g);
    	}
     
    }
    Citation Envoyé par Amnael Voir le message
    Parce que si je mets l'image en fond il faut que le tableau d'intersection puisse coïncider avec l'image de fond aussi et là ça commence à devenir chaud chaud^^
    Tout juste au plus un peu d'arithmétique et un mapping de l'image (quelques coordonnées de base).

    Par exemple, si tu représente les coordonnées de la case en haut à gauche par un java.awt.Rectangle topLeftSquare, dessiner un pion en col/row (coordonnées dans le tableau) :

    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
    private void drawPiece(Graphics g, int col, int row) {
       Image pieceImage;
       if ( board[row][col]==Piece.WHITE ) {
           pieceImage = pieceImageWhite;
       }
       else if ( board[row][col]==Piece.BLACK ) {
           pieceImage = pieceImageBlack;
       } 
       else {
           return;
       }
       int x = topLeftSquare.x + col*topLeftSquare.width;
       int y = topLeftSquare.y + row*topLeftSquare.height;
       g.drawImage(pieceImage, x, y, topLeftSquare.width, topLeftSquare.height, null);
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Bon et bien merci à tous !

    Je pense que je vais d'abord me concentrer sur l'algorithmique du jeu en lui même quitte à afficher en console dans un premier temps.

    A ce moment là j'essaierais d'appliquer vos conseils au travers d'une interface graphique.

    PS: Non je ne pense pas que je gérerais un zoom; en revanche il faudra que le plateau soit adapté à la taille de la fenêtre si l'utilisateur veut changer...du coup ça impliquerait un redimensionnement des images en fonction de la taille de la jFrame.



    En tout cas je sens que je vais bien m'amuser avec ce projet, ça ma changera des trucs barbant qu'on a fait toute l'année =)

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Amnael Voir le message
    PS: Non je ne pense pas que je gérerais un zoom; en revanche il faudra que le plateau soit adapté à la taille de la fenêtre si l'utilisateur veut changer...du coup ça impliquerait un redimensionnement des images en fonction de la taille de la jFrame.
    Si tu dessines toujours dans une image (et pas directement dans le panel) ça ne change rien : cette image ne change pas de taille (donc le dessin des pierres se fait toujours de la même façon sans tenir compte de la taille de la fenêtre) et il suffit de l'afficher dans le fond du panel avec une taille calculée par rapport à la taille du panel. Attention toutefois à l'aspect proportionalité : soit tu centres l'image redimensionnée proportionnellement, en remplissant les bandes conséquentes autour (séparer l'image de fond et l'image de plateau), soit tu agis sur la taille de la fenêtre pour empêcher un redimensionnement non proportionel (plus complexe). Attention également au problème de résolution.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Organisation d'une interface avec swing
    Par dodo69 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 16/04/2014, 09h43
  2. image tif dans interface g avec swing
    Par Papipen dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 09/06/2009, 05h14
  3. Interface graphique avec swing
    Par Papipen dans le forum Graphisme
    Réponses: 6
    Dernier message: 08/06/2009, 08h32
  4. Jar et interface graphique avec swing
    Par ALIAS200 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 02/05/2007, 17h25
  5. Interface de simulation d'un radar avec SWING
    Par KING_OF_GRACELAND dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/06/2006, 23h22

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