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

 Java Discussion :

Affichage de texte sur coordonées précises


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut Affichage de texte sur coordonées précises
    Bonjour à tous,

    Je cherche à afficher des chiffres précis au centre des cases qui sont dessinées sur ma Fenêtre, le problème est que je ne sais pas comment "automatiser" ça, est-ce que je dois, par exemple pour un tableau de 100 cases, créer 100 TexArea manuellement? Ou peut-on le faire autrement? Je ne sais pas non plus comment disposer ce TextArea à des coordonnées précises, j'en viens même à me demander s'il n'existe pas un autre outils de java plus pratique pour ce que je cherche à faire.
    Le code de ma Fenêtre :
    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
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
     
    public class Fenetre extends JFrame {
      private JPanel container = new JPanel();
      private Grid grid;
      private Panneau pan;
     
      public Fenetre(Grid grid, Panneau pan){
        this.grid = grid;
        this.pan = pan;
        this.setTitle("Ou qu il va le robot");
        this.setSize(500, 500);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        container.setBackground(Color.white);
        container.setLayout(new BorderLayout());
        container.add(pan);
        this.setContentPane(container);
        this.setSize((int)getToolkit().getScreenSize().getWidth(), ((int)getToolkit().getScreenSize().getHeight() - 40));
        this.setVisible(true);
        this.pan.paintComponent(this.pan.getGraphics());
        this.setContentPane(container);
      }
    }
    Le code de mon Panel :
    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
    import java.math.*;
    import java.util.*;
    import java.awt.*;
    import javax.swing.*;
     
    public class Panneau extends JPanel {
     
      private Grid grid;
     
      public Panneau(Grid g){
        super();
        this.grid = g;
      }
     
      public void paintComponent(Graphics g){
        int sizeX = grid.getSizeX();
        int sizeY = grid.getSizeY();
        int posX = grid.getPosX();
        int posY = grid.getPosY();
        int[][] tab = grid.getGrid();
        int taillemax;
        int taillecarre;
        for (int j = 0; j < sizeY; j ++) {
          for (int i = 0; i < sizeX; i ++) {
            if(j==posY && i==posX){
              g.setColor(Color.RED);
              g.fillRect(i*100, (sizeY-1)*100-j*100, 100, 100);
            }
            g.setColor(Color.BLACK);
            g.drawRect(i*100, (sizeY-1)*100-j*100, 100, 100);
          }
        }
      }
    }
    J'ai aussi un autre problème (mais qui celui-ci n'est pas en rapport avec l'interface graphique). Dans une classe Grid j'ai un attribut de type Dir et le dire est déclaré comme suit dans la classe Grid :
    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
    private enum Dir {
            E(0,  1,  0),
            N(1,  0,  1),
            W(2, -1,  0),
            S(3,  0, -1);
     
            private final int intValue, moveX, moveY;
            private static final Map<Integer, Dir> intToDir =
                Stream.of(values()).collect(Collectors.toMap(Dir::toInt, e -> e));
     
            Dir(int intValue, int moveX, int moveY) {
                this.intValue = intValue;
                this.moveX = moveX;
                this.moveY = moveY;
            }
     
            int toInt() {
                return intValue;
            }
     
            static Dir fromInt(int dir) {
                return intToDir.get(mod(dir, 4));
            }
     
            Dir rotate(int rot) {
                return fromInt(toInt() + rot);
            }
     
            void move(Grid grid, int dist) {
                grid.move(moveX * dist, moveY * dist, 0);
            }
        }
    De quelle manière cet objet peut-il être déclaré en tant qu'attribut d'un Grid, j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Grid tableau = new Grid(new Dir(0,1,0));
    Mais ce n'est évidemment pas accessible en dehors de cette fameuse classe Grid, je bloque donc sur ce qui me semble être quelque chose d'assez simple, si une âme charitable passe par ici, je suis preneur

    Merci d'avoir lu ! Je suis dispo pour toute info supplémentaire

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    C'est sur que si l'enum est private elle ne sera pas accessible depuis l’extérieur de la classe. Mais bon ça aurait mérité une question séparée puisque ça n'a pas grand chose a voir avec ton problème initial (différent problèmes -> différents posts).


    Pour le reste... ça dépend, tu comptes faire quoi exactement ?
    • Placer des TextArea - ici c'est un placement de composant via un gestionnaire de mise en page (soit un existant soit un nouveau créé pour l'occasion), il te faut donc placer le TextArea en fonction de la taille et des coordonnées de la cellule et de la taille du TextArea.
    • Ou dessiner le texte avec graphics.drawText() - Graphics dispose de méthode pour calculer la taille d'un texte ce qui permet sa mise en page manuelle en fonction de sa police, etc. :
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut
    Bonjour à toi,

    Tout d'abord merci pour ta réponse.
    La déclaration de l'enum était un fichier fourni par mes professeurs c'est pour ça que je cherchais une manière de déclarer cela sans modifier le en , mais après de multiples recherches je pense qu'il ne me reste plus que cette solution.

    Du côté de l'interface graphique, effectivement la fonction drawtext() semble mieux correspondre à mes besoins, merci pour cet éclaircissement et ces liens !

    PS : désolé pour les deux problèmes en un sujet, mais le problème de l'enum me paraissait bien trop simple pour en faire un sujet à part entière, je le saurais pour les prochaines fois!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage du texte sur site perso avec chrome
    Par hyogas dans le forum Webdesign & Ergonomie
    Réponses: 0
    Dernier message: 09/08/2016, 18h18
  2. Thread : affichage de texte sur la form
    Par pve3 dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/09/2015, 18h33
  3. Affichage de texte sur la carte
    Par zdf77 dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 26/07/2011, 14h52
  4. Affichage de texte sur une image
    Par Metalyn dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 23/04/2009, 13h31

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