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

Composants Java Discussion :

JTable Scrollable invisible


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Par défaut JTable Scrollable invisible
    Bonjour!
    Voilà, j'ai un problème concernant la "scrollabilité" d'un tableau. Bon, inutile de vous dire que j'ai testé pas mal de code et d'exemple en ligne, c'est pour ça que je viens à vous.
    Pour illustrer mon souci: j'ai un JFrame dans lequel je souhaite mettre deux tableaux. Le premier est de taille fixe et le second est de taille variable. Les deux sont séparés par une zone de texte.
    Donc je souhaiterais mettre un scroll sur le second tableau mais ça le fait disparaître.
    Quand je ne mets pas le second tableau dans un JScrollpane, il apparait bien mais je ne vois pas le bas du tableau (c'est-à-dire le reste qui dépasse mon JFrame).
    Voici mon code:
    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
     
    public class FrameMesure extends JFrame {
    	private static final long serialVersionUID = 1L;
     
    	public FrameMesure(Pourcentage pct){
    		super("Suivi d'une mesure");
    		setLayout( null );
    		setSize(750,700);
    		setLocationRelativeTo(null);
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     
    		JLabel label1 = new JLabel( "Résultat" );
    		label1.setBounds( 350, 25, 150, 20 );
    		add( label1 );
     
    		//affichage
    		JTable table = new JTable(13,2);
    		table.setEnabled(false);
    		table.setValueAt("Début: ",0,0);
    		table.setValueAt("Fin: ",1,0);
    		table.setValueAt("Equipe:",2,0);
    		table.setValueAt("Opérateur: ",3,0);
    		table.setValueAt("Nombre de passage: ",4,0);
    		table.setValueAt("Test: ",5,0);
    		table.setValueAt("Type Véhicule", 6, 0);
    		table.setValueAt("Résultats: ",7,0);
    		table.setValueAt("Valeur MIN",8,0);
    		table.setValueAt("Valeur MAX",9,0);
    		table.setValueAt("Taux Bon Direct",10,0);
    		table.setValueAt("Nombre total de véhicule dans la sélection", 11,0);
    		table.setValueAt("Nombre de véhicule mauvais dans la sélection", 12, 0);
    		table.setValueAt(pct.getDatedebut(),0,1);
    		table.setValueAt(pct.getDatefin(),1,1);
    		table.setValueAt(pct.getEquipe(),2,1);
    		table.setValueAt(pct.getOperateur(),3,1);
    		//table.setValueAt(valeurs[4],4,1);
    		table.setValueAt(pct.getTest(),5,1);
    		table.setValueAt(pct.getSilhouette(),6,1);
    		//table.setValueAt(valeurs[7],7,1);
    		table.setValueAt(pct.getMin(),8,1);
    		table.setValueAt(pct.getMax(),9,1);
    		table.setValueAt(pct.getBon(),10,1);
    		table.setValueAt(pct.getNbtotal(),11,1);
    		table.setValueAt(pct.getNbmauvais(),12,1);
     
    		table.setBounds(12,50, 725,210);
    		add(table);
     
    		JTable table2 = new JTable(pct.taille(),3);	
    		for (int i= 0; i<pct.taille();i++){
    				table2.setValueAt(pct.getListeVehicule().get(i).getDate(), i, 0);			
    			}
    		for (int i= 0; i<pct.taille();i++){
    				table2.setValueAt(pct.getListeVehicule().get(i).getId(), i, 1);			
    			}
    		for (int i= 0; i<pct.taille();i++){
    				table2.setValueAt(pct.getListeVehicule().get(i).getRes(), i, 2);			
    			}
     
    		table2.setBounds(12, 300, 725, (pct.taille())*20);
    		table2.setEnabled(false);
    		add(table2);
     
     
    		JButton bouton = new JButton("Fermer");
    		bouton.setBounds(350, 650, 75, 20);
    		add(bouton);
    		bouton.addActionListener( new ActionListener(){
    				public void actionPerformed(ActionEvent ae){
    					dispose();
    				}
    			}
    		);
    		add(bouton);
    		setVisible(true);
     
    	}
     
    }
    Pourcentage est une classe ayant beaucoup d'attributs dont des listes...
    Le code ci-dessus n'est pas avec JScrollpane.

    Merci d'avance

  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
    Citation Envoyé par ralek Voir le message
    Le code ci-dessus n'est pas avec JScrollpane.
    Alors donne le code avec le JScrollPane. Sinon, comment veux-tu qu'on détecte ton erreur ?
    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 averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Par défaut
    Ah oui, c'est vrai... j'ai essayé tellement de possibilité. En voici une
    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
     
    public class FrameMesure extends JFrame {
    	private static final long serialVersionUID = 1L;
     
    	public FrameMesure(Pourcentage pct){
    		super("Suivi d'une mesure");
    		setLayout( null );
    		setSize(750,700);
    		setLocationRelativeTo(null);
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     
     
    		JTable table2 = new JTable(pct.taille(),3);	
    		for (int i= 0; i<pct.taille();i++){
    				table2.setValueAt(pct.getListeVehicule().get(i).getDate(), i, 0);			
    			}
    		for (int i= 0; i<pct.taille();i++){
    				table2.setValueAt(pct.getListeVehicule().get(i).getId(), i, 1);			
    			}
    		for (int i= 0; i<pct.taille();i++){
    				table2.setValueAt(pct.getListeVehicule().get(i).getRes(), i, 2);			
    			}
     
    		table2.setBounds(12, 300, 725, (pct.taille())*20);
    		table2.setEnabled(false);
    		JScrollPane scroll = new JScrollPane(table2);
    		add(scroll);
    		//add(table2);
     
     
     
    		setVisible(true);
     
    	}
     
    }
    J'ai rajouté 2 lignes, et j'ai mis en commentaire ce que j'avais avant...

  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
    Il ne faut pas mettre un layout à "null". Tu dois utiliser le layout correct, sinon tu vas avoir des comportement étrange si tu ne maitrises pas le mode d'affichage des composants.
    Ensuite, il faut préciser le "setBounds" sur le JScrollPane.
    Mais essai d'abord avec un layout correct.
    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.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Par défaut
    Merci pour la réponse alors j'ai mis un argument dans le setLayout. J'ai commencé par un flowlayout, puis un borderlayout et enfin un gridLayout. Effectivement je ne les maîtrise pas beaucoup du coup à chaque foisj'ai des comportements bizarres comme tu dis.

    Niveau positionnement, je souhaite (dans mon premier code) le premier JLabel en haut-centré, suivi du tableau fixe qui occupe toute la largeur de mon Jframe, ensuite le tableau avec JScrollpane et en bas-centré le bouton fermeture.

    J'ai pu voir donc avec le flowlayout et un gridlayout que mon tableau est bien scrollé.
    Par je voudrais quelques choses qui ressemble à ça. Bien évidement le scrollpane n'est pas là, du coup on ne voit pas le bouton de fermeture



    Le plus proche serait un griLayout(1 colonne 4 lignes) mais je ne sais pas trop comment rendre ça PAS proportionnel.

  6. #6
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    En utilisant un gridBagLayout.
    Peux être que le BoxLayout peut faire ça aussi ( à vérifier )

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

Discussions similaires

  1. ResultSet scrollable et JTable
    Par Julien Bodin dans le forum JDBC
    Réponses: 4
    Dernier message: 29/10/2009, 10h48
  2. rendre invisible le cadre d'un JTable
    Par monpseudonom dans le forum Composants
    Réponses: 1
    Dernier message: 09/04/2008, 09h36
  3. Rendre invisible une ligne de JTable
    Par Sebastien_INR59 dans le forum Composants
    Réponses: 1
    Dernier message: 01/11/2007, 15h08
  4. ma JTable est invisible
    Par keub51 dans le forum Composants
    Réponses: 2
    Dernier message: 04/10/2007, 10h36
  5. Onglet contenant une JTable scrollable et un panel
    Par xtaZy dans le forum Composants
    Réponses: 3
    Dernier message: 06/03/2007, 20h40

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