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

AWT/Swing Java Discussion :

Pas de JScrollBar verticale sur JTable


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut Pas de JScrollBar verticale sur JTable
    Je suis navré d'abuser une fois encore.
    Je m'aperçois que ma JScrollBar ne semble pas s'afficher (alors que c'était le cas auparavant ligne 32), d'autre part le setBounds ne semble pas redimensionner non plus mon JTable qui me permettrait de réduire la hauteur afin de faire apparaitre la scrollbar.

    Je commence à fatiguer, peut-être que l'erreur vous sautera aux yeux..
    Merci encore

    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
     
    void build(){
    		//On créé la JFrame
    		JFrame mainJf = new JFrame("MEDIALOGIC distribué par le groupe 4");
    		mainJf.setLayout(new BorderLayout());
    		mainJf.setSize(700, 700);
    		mainJf.setLocationRelativeTo(null);
     
    		//On créé des panels)
    		JPanel panelSearch = new JPanel();
    		JPanel panelMenu = new JPanel();
    		JPanel panelTable = new JPanel();
     
    		//On positionne les panels dans la JFrame
     
    		mainJf.getContentPane().add(panelMenu, BorderLayout.NORTH);
    		mainJf.getContentPane().add(panelSearch, BorderLayout.CENTER);
    		mainJf.getContentPane().add(panelTable, BorderLayout.SOUTH);
     
    		//Création barre de menu
    		JMenuBar jmb = tff.createMenu();
    		panelMenu.add(jmb);
     
    		//Composants du panel de recherche que l'on affiche
    		ToolsFrameFactory.createJLabel(panelSearch, "choisir une catégorie");
    		ToolsFrameFactory.createJcomboBox(true, panelSearch);
    		ToolsFrameFactory.createJLabel(panelSearch, "Rechercher");
    		ToolsFrameFactory.createJTextField(panelSearch, 10);
     
     
     
    		//on affiche le tableau JTable contenant la liste des oeuvres par critère
    		JTable jt = new JTable(acc);
    		panelTable.setBounds(30, 30, 500, 100);
     
    		JScrollPane scrollPane = new JScrollPane(jt);
    		panelTable.add(scrollPane, BorderLayout.CENTER);
     
    		mainJf.setVisible(true);
    		mainJf.setResizable(true);
    		mainJf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}	
    }

  2. #2
    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,

    1. Le scrollpane décidera d'afficher ou pas une scrollbar en fonction de la taille de la JTable et du nombre de lignes. S'il n'y a pas besoin d'en afficher, elle n'en affichera pas.
      On peut forcer l'affichage d'une scrollbar, par l'option "always" :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      		JScrollPane scrollPane = new JScrollPane(jt,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
      Mais de toute façon, elle ne sera active que si des lignes ne sont pas visibles (les mêmes conditions pour qu'elle apparaisse quand elle est en "needed").
    2. On n'utilise jamais setBounds, setSize, setLocation... lorsqu'on on utilise des Layout Manager. C'est eux qui appellent ces méthodes pour donner la taille et la position des composants. Tous les appels que tu pourras faire seront de toute façon annulés lors du processus de layout automatique.
      On contrôle les dimensions des composants par les méthode setPreferredSize, setMinimumSize, setMaximumSize, en fonction du type de Layout Manager et des contraintes de layout.
    3. De toute façon, ce n'est pas sur le panelTable qu'il faut appliquer des dimensions, mais sur le JScrollpane. Le JPanel panelTable est dans le south du BorderLayout : si tu lui configures une taille (par panelTable.setPreferredSize(new Dimension(500,100));), le south du contentpane de la JFrame fera 100px de haut, mais son contenu continuera avoir la taille qu'il a envie d'avoir, donc il sera juste tronqué en hauteur.
      C'est sur le JScrollpane qu'il faut appliquer les contraintes de taille :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      scrollPane.setPreferredSize(new Dimension(500,100));
    4. A noter qu'il peut être intéressant de faire jt.setFillsViewportHeight(true);.
      Si le nombre de lignes de la JTable n'est pas suffisant pour remplir toute la hauteur du JScrollpane, cela permet d'avoir la JTable qui remplit quand même la hauteur du scrollpane (on voit le fond dans la couleur de fond de la JTable, sinon c'est le fond du JScrollPane.
    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.

  3. #3
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Hello

    Du coup c'est vrai que j'ai du mal à m'y retrouver avec les layout manager et leur contrainte...Mais enfin ça y est, avec un peu de doc et beaucoup ton aide j'ai enfin pu m'en sortir
    Merci

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

Discussions similaires

  1. Beamer : pas de marges verticales sur un seul slide
    Par newouech dans le forum Beamer
    Réponses: 1
    Dernier message: 23/11/2010, 15h00
  2. Listener sur JTable
    Par calypso dans le forum Composants
    Réponses: 3
    Dernier message: 05/02/2009, 16h27
  3. Réponses: 1
    Dernier message: 02/02/2005, 19h34
  4. Réponses: 3
    Dernier message: 09/12/2004, 11h49

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