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 :

Repaint avec ScrollPane


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 94
    Par défaut Repaint avec ScrollPane
    Bonjour à tous,

    je possède une fenêtre sur laquelle j'ai rajouté des scrools horizontaux et verticaux. Le problème que je rencontre est que lors de déplacement à l'aide de ces scrools, certains textes de mes jlabels deviennent coulants et illisibles.
    J'ai l'impression que le texte se supperpose et ne se rafraichit pas.

    Lorsque je redimensionne ma fenêtre, un rafraichissement à lieu et le tête redevient lisible.

    Je suppose qu'il doit me manquer un repaint quelque part mais où? Dois-je affecter un listener à mon scroolpane et rafraichir lorsqu'il perd le focus?

    Merci d'avance.


    EDIT : Les seuls JLabel coulants se trouvent dans un JPanel utilisant la méthode paintComponent(Graphics g)

  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
    Il nous faut un code simple et compilable reproduisant le problème.
    A tout hasard, tu as probablement oublié d'appeler super.paintComponent dans ta surcharge de méthode.
    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.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 94
    Par défaut
    Bonjour,

    j'ai implémenté un exemple reprenant la même structure que mon code d'origine et ayant le même comportement :

    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
    import javax.swing.*;
     
    import java.awt.*;
    import java.beans.Statement;
    import java.sql.ResultSet;
     
    public class Test {
     
    	/**
             * Classe de test
             * @param args
             */
    	public static void main(String[] args) 
    	{
    		/**Creation de la fenetre*/
    		JFrame frame = new JFrame();
    		frame.setSize(600,400);
    		frame.setLocationRelativeTo(null);
    		frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    		frame.getContentPane().setLayout(new BorderLayout(0, 0));
     
    		class PanelCentre extends JPanel
    		{
     
    			public PanelCentre()
    			{
    				super();
    				this.setPreferredSize(new Dimension(400,200));
    				this.setLayout(new BorderLayout(0, 0));
     
    				JLabel lblCentre = new JLabel("PanelCentre");
    				this.add(lblCentre,BorderLayout.CENTER);
     
    			}
     
    			public void paintComponent(Graphics g)
    			{		
     
    			}
    		}
     
    		JPanel panel = new JPanel();
     
     
    		JScrollPane scrollPane = new JScrollPane(panel);
    		scrollPane.setSize(600,400);
    		panel.setLayout(new BorderLayout(0, 0));
     
    		JPanel panel_1 = new JPanel();
    		panel_1.setSize(100,400);
    		panel.add(panel_1, BorderLayout.NORTH);
     
    		JLabel lblPanelhaut = new JLabel("PanelHaut");
    		panel_1.add(lblPanelhaut);
     
    		PanelCentre panel_2 = new PanelCentre();
    		panel.add(panel_2, BorderLayout.CENTER);
    		//panel_2.setLayout(null);
     
    		JPanel panel_3 = new JPanel();
    		panel_3.setSize(100,400);
    		panel.add(panel_3, BorderLayout.SOUTH);
     
    		JLabel lblPanelbas = new JLabel("PanelBas");
    		panel_3.add(lblPanelbas);
    		frame.getContentPane().add(scrollPane);
     
    		frame.pack();
    		frame.setVisible(true);
    	}
    }

    Donc lorsque l'on réduit la fenêtre de sorte à cacher "PanelCentre" et que l'on descend avec le scroll, le label ne se rafraichit pas et devient "coulant".

    Si au contraire on réduit la fenêtre mais que "PanelCentre" est toujours visibile, tout se passe correctement. Il n'y a que lorsque "PanelCentre" est caché et qu'on le réaffiche qu'il est coulant.

    Remarque : dans mon code d'origine, la méthode paintComponent affiche un panel supplémentaire dans mon PanelCentre. Ce panel supplémentaire s'affiche toujours correctement.

    Merci.

  4. #4
    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
    Comme prévu, tu n'as pas appelé "super.paintComponent" dans ta méthode surchargée.
    J'ai testé sur ton exemple et ça fonctionne correctement.
    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. Pb avec scrollpane qui coupe la fin du clip
    Par charliejo dans le forum Flash
    Réponses: 2
    Dernier message: 14/02/2007, 13h00
  2. Probleme de zoom avec scrollpane
    Par SQUAL dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 19/01/2007, 21h49
  3. [FLASH 8] 2 PB avec scrollpane
    Par akhael dans le forum Flash
    Réponses: 3
    Dernier message: 13/09/2006, 10h00
  4. [JOptionPane] Message avec ScrollPane
    Par Benne dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 28/09/2005, 16h12
  5. [composant][MX_2004_pro] prob avec scrollpane
    Par scorpiwolf dans le forum Flash
    Réponses: 6
    Dernier message: 12/01/2004, 20h18

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