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

Graphisme Java Discussion :

Comment dessiner depuis une methode KeyPressed sans utilser getGraphics()


Sujet :

Graphisme Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 1
    Par défaut Comment dessiner depuis une methode KeyPressed sans utilser getGraphics()
    Bonsoir, j'ai 3 classes : une pour le frame, une pour le panel et une pour le KeyListener
    Mon objectif est de dessiner quelque chose, par exemple un texte sur le frame lorsque j'appuie sur la flèche gauche de mon clavier
    J'ai utilisé getGraphics() pour y arriver mais cela est considérer comme mauvaise pratique, et je n'ai aucune idée de comment le faire de la bonne manière
    J'ai lu un tutoriel sur https://docs.oracle.com/javase/tutor...ing/index.html

    "The paintComponent method is where all of your custom painting takes place. This method is defined by javax.swing.JComponent and then overridden by your subclasses to provide their custom behavior."
    Je ne suis pas sur d'avoir bien compris, j'ai extend la classe DrawingBoard dans KeyboardListener mais dans la méthode keyPressed, je ne sais pas comment appeler la méthode paintCompoment(Graphics g) que dois je mettre comme paramètre et est-ce la bonne approche ?


    Merci d'avance
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
      public class Main {
     
            public static void main(String[] args) {
     
                SwingUtilities.invokeLater(new UserInterface());
            }
        }
     
        public class UserInterface implements Runnable {
     
            private JFrame frame;
            private DrawingBoard drawingBoard;
     
            @Override
            public void run() {
                // TODO Auto-generated method stub
                frame = new JFrame("");
                frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                createComponents(frame.getContentPane());
                addListener();
                frame.pack();
                frame.setVisible(true);
     
            }
     
            public void createComponents(Container container) {
                drawingBoard = new DrawingBoard();
                container.add(drawingBoard);
            }
     
            public void addListener() {
                frame.addKeyListener(new KeyboardListener(drawingBoard));
            }
     
        }
     
        public class DrawingBoard extends JPanel {
     
            public Dimension getPreferredSize() {
                return new Dimension(250, 200);
            }
     
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
     
            }
     
        }
     
    public class KeyboardListener extends DrawingBoard implements KeyListener {
     
        private DrawingBoard drawingBoard;
     
        public KeyboardListener(DrawingBoard drawingBoard) {
            this.drawingBoard = drawingBoard;
        }
     
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawString("Bonjour", 50, 50);
     
        }
     
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                // Comment j'appelle la methode paintComponent ici ?
     
            }
     
        }
     
        @Override
        public void keyReleased(KeyEvent e) {
            // TODO Auto-generated method stub
     
        }
     
        @Override
        public void keyTyped(KeyEvent e) {
            // TODO Auto-generated method stub
        }
    }

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Voici l'approche classique : tu construis une image genre BufferedImage lors de la construction de ton Panel. Ensuite tu prends son graphics via getGraphics une fois pour toute dans le constructeur.
    Chaque fois que tu souhaites modifier l'image, tu le fais sur le graphics de l'image.
    Lorsque la modification est terminée, tu appelles repaint sur le Panel.
    Tu surcharge paintComponent de JPanel. A l'intérieur, tu ne fais que appeler la méthode parent puis afficher ta BufferedImage.
    Voila pour le principe général.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. [C#] Comment sortir d'une méthode void ?
    Par dcollart dans le forum C#
    Réponses: 4
    Dernier message: 14/09/2010, 14h58
  2. Lancer une class depuis une methode
    Par Bulscope dans le forum Langage
    Réponses: 2
    Dernier message: 31/12/2006, 10h23
  3. [POO] Acces aux attributs d'un objet depuis une methode evenement :s
    Par NikoGJ dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/07/2006, 19h01
  4. comment dessiner sur une image
    Par baracouda dans le forum Graphisme
    Réponses: 2
    Dernier message: 26/05/2006, 00h21
  5. Réponses: 11
    Dernier message: 16/05/2006, 14h31

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