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

Agents de placement/Fenêtres Java Discussion :

Affichage incorrect avec une JScrollPane


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut Affichage incorrect avec une JScrollPane
    BOnjour à tous,

    mon projet est quasi-bouclé puisqu'il ne reste plus qu'un petit problème d'affichage et à créer l'exécutable correspondant. Mon problème d'affichage est le siuvant :
    j'ai des TextField et des TextArea contenus dans un JPanel lui même appartenant à un JScrollPane/ Jusque là pas de souci. Le problème survient quand on descend la barre de défilement, je descends bien sur ma page mais les éléments du haut (qui remontent) apparaissent au-dessus de ma barre de menu de ma JFrame. Ma question est donc la suivante : est-ce-qu'il y a une propriété sur les Component permettant de spécifier l'élement en dessous. des autres.

    Merci d'avance à tous.

    NB:le problème ne se pose pas avec les JLabel, JList, JButton et Choice? Je n'ai pas utilisé JTextField ni JTextArea car je je trouve la gestion des TextListener et de la scrollbar plus compliquée.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Est ce que tu as utilisé la méthode setJMenuBar de la classe JFrame pour placer ton menu? Parce qu'il n y a aucune raison que ca fasse cela.

    Sinon il me semble que c le premier élément ajouté qui sera au dessus du deuxième, et ainsi de suite ...
    En tout cas c ce que ca me fait avec des JLabel sur un Layout null. Le premier JLabel posé sera au dessus de tous les autres.

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    oui je l'ai utilisée. ce problème ne survient pas qu'avec le JMenuBar. En effet, j'ai un autre JPanel sur la gauche de ma JFrame qui après un MouseMoved m'affiche dans un TextArea (contenu dans une JPopUpMenu) un ensemble de commentaires. ce TextArea se positionne également sous ceux du JScrollPane et je ne comprends pas pourquoi.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Peut etre pourrai tu nous donner un peu de code executable où on pourrai observer le bug.
    Parce que g fait ce petit test et ca ne me le fait pas :
    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
    public static void main(java.lang.String[] args) {
     
    		JFrame frame = new JFrame("Test");
    		frame.getContentPane().setLayout(new BorderLayout());
     
    		JLabel jl = new JLabel("label");
     
    		jl.addMouseListener(new MouseAdapter(){
    			public void mouseClicked(MouseEvent e) {
    				JPopupMenu jpm = new JPopupMenu();
    				JMenuItem menu = new JMenuItem("menu");
    				jpm.add(menu);
    				menu.addActionListener(new ActionListener(){
    					public void actionPerformed(ActionEvent ev) {
    						((JMenuItem)ev.getSource()).getParent().setVisible(false);
    					}
    				});
    				Point p = e.getPoint();
    				jpm.setLocation(p);
    				jpm.setVisible(true);
    			}
    		});
     
    		JTextArea jta = new JTextArea(10,10);
    		JScrollPane jsp = new JScrollPane(jta);
     
    		frame.getContentPane().add(jsp,BorderLayout.CENTER);
    		frame.getContentPane().add(jl,BorderLayout.WEST);
     
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setSize(200,200);
    		frame.setVisible(true);
    	}

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    ce n'est pas un JTextArea mais un TextArea et c'est bizarre ça ne me le fait qu'avec les éléments du package Awt et pas celui de Swing.

    Je ne peux pas mettre trop de code car il n'est pas très bien organisé cependant il fonctionne parfaitement selon nos attentes.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Effectivement g aussi le bug avec un TextArea.
    Si tu utilise deja des JPanel, JScrollPane ... pourquoi ne pas utiliser que du swing. C'est un peu plus beau et ca bug pas
    Mais bon tu dois avoir tes raisons

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    comme je l'ai mis plus haut c'est juste pour me faciliter l'utilisation au niveau des listener (TextField) ou des scrollBar (TextArea). Pour le deuxième je ne suis pas sûr à 100% mais il me semble que la ScrollBar n'est pas directement intégré, si?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    En ce qui concerne le listener du textfield si c'est un ActionListener, il est relativement facile à mettre en place. Les autres listener ne sont pas beaucoup plus compliqué.

    Et si tu veux une zone de text avec des scrollbar en swing, il y a le JTextPane ou alors un JTextArea dans un JScrollPane.

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    avec le textField, j'utilise le textListener.

    avec le TextArea si j'ai le temps j'essaierai mais c'est quand même étrange cette incompatibilité entre Swing et Awt.

  10. #10
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Incompatibilité en Swing et Awt.

    Je pense que c'est normal, non?

    Pour Swing, tous les composants doivent descendre de JComponent. Ce qui ne semblent pas être le cas des composants de AWT.

    Je précise que je ne suis pas spécialiste Swing donc ma réponse n'a pas force de loi

  11. #11
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    c'est sûr que les deux ne découlent pas directement du même élément mais ils sont quand même construits sur les mêmes bases je pense. Il y aurait donc une caractéristique appartenant à un des deux qui provoquerait le problème. On peut ajouter des éléments de Awt à des JPanel appartenant à Swing alors pourquoi ce pb d'affichage, j'espère que qqln aura la réponse.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    J'ai essayé avec un ScrollPane plutot qu'un JScrollPane et le bug disparait
    A mon avis il vaut mieu eviter de trop melanger Swing et AWT.
    Et il n'ai pas evident que ton bug ai une solution.
    Il va falloir que tu passe certains éléments Swing à leur équivalent AWT ou l'inverse

  13. #13
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Je crois même qu'il est fortement déconseillé de mélanger les deux.

  14. #14
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    je vais le passer en ScrollPane, je vais bien voir ce que ça donne, mais voilà un bug qui ne trouve pour le moment pas d'explication

  15. #15
    Membre confirmé Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Points : 605
    Points
    605
    Par défaut
    Citation Envoyé par jowo
    Je crois même qu'il est fortement déconseillé de mélanger les deux.
    je confirme... il vaux mieux faire que du swing... la quasi totalité (je n'ai pas encore trouver quelle serai l'exception mais on ne sait jamais) des composant awt son réécrit dans swing
    a+

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Et un bug dont on se fiche pas mal parce que le résultat de cette fusion est plutot moche.
    Les scrollbar swing et AWT sont complètement différente. Alors mélanger les deux ca donne un résultat plutot laid de mon point de vue.
    Pour garder une certaine homogeneité de ton interface autant se cantoner a AWT ou Swing.

  17. #17
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    voilà ce que je fais et malheureusement cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    jsp2 = new ScrollPane();
    		      	element.add(jsp2.add(new RulePanel(TestWindow.VIEW,node)),BorderLayout.CENTER);	   	    
    	      		jsp2.setPreferredSize(element.getPreferredSize());

    ce que j'avais avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    element.add(jsp2= new JScrollPane(new RulePanel(TestWindow.VIEW,node)),BorderLayout.CENTER);	   	    
    	      		jsp2.setPreferredSize(element.getPreferredSize());

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Qu est ce qui ne fonctionne pas?
    Toujours le même bug, ou c'en est un autre?
    Généralement on fait un setPreferredSize sur l'élément à l'intérieur de ScrollPane et pas sur le ScrollPane.

  19. #19
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    je n'ai plus de ScrollBar qui apparaît en fait même si je fais le setPreferred Size sur l'élément à l'intérieur du ScrollPane cad dans mon cas sur le RulePanel.

    Je n'ai pas le temps de réécrire l'interface, elle a été réalisée en speed pour boucler mon projet de stage, j'ai maintenant le mois d'août pour faire mon rapport et les tests à grande échelle. Elle sera reprise plus tard je pense. Le bug ne gêne en presque rien les fonctionnalités.

    Au niveau du mélange Awt/Swing c'est pas grave de passe la JScrollPane en ScroolPane car elle est unique dans l'interface, on ne verra donc jamais la diff entre les deux.


    Merci à tous pour vos réponses très constructives !!!

  20. #20
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    Sur la discussion Awt/Swing, je ne vois pas pourquoi il y a incompatibilité d'utiliser les deux (je parle sur le plan technique et non esthétique). Effet, tous les components Awt et Swing sont basés sur la classe java.awt.Component, ils sont donc censés avoir le même comportement, mis à part quelques exceptions, non?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Affichage dossier avec une case à cocher
    Par corwin44 dans le forum Windows Vista
    Réponses: 5
    Dernier message: 22/01/2009, 14h34
  2. Affichage incorrect d'une table
    Par LuckyLuke56 dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/12/2008, 11h47
  3. Réponses: 3
    Dernier message: 03/12/2007, 11h28
  4. Réponses: 1
    Dernier message: 18/10/2007, 00h18
  5. Réponses: 2
    Dernier message: 03/08/2005, 00h39

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