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 :

Casse Tete : Scroll


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Juin 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 9
    Par défaut Casse Tete : Scroll
    Bonjour,

    Je suis en train de mettre au point une interface pouvant être assimilé à un planning et j'ai vraiment du mal.

    Voici l'objectif : ( petit croquis )

    |---------------------------------------|
    |.....|................................................|
    |.....|................................................|
    |..1.|.................2..............................|
    |.....|................................................|
    |.....|................................................|
    |.....|................................................|
    |---------------------------------------|

    Je souhaite que les zones 1 et 2 défile verticalement ensemble mais je veux que la zone 2, elle seule, defile horizontalement ( et que la barre de scroll soit toujours à l'ecran )

    Alors j'ai un JScrollPane qui regroupe ma Zone 1 et ma Zone 2 qui correspondent à un JSplitpane.

    Zone 1 est un Jpanel avec un verticalFlowLayout
    Zone 2 est un JscrollPane avec un panel en verticalFlowLayout

    Avec ces éléments j'obtiens bien le scroll vertical à condition que la zone 2 soit "bien remplie"

    Les problemes qui me restent sont les suivants :

    J'aimerais que le scroll horizontal de la zone 2 soit en haut de l'ecran et surtout qu'il reste fixe meme lorsque je scroll vers le bas ( Via mon 1er jscrollpane )

    Je sais déjà que je vais etre piègé à cause de mon verticalFlowLayout de la zone 2 afin de pouvoir créer une grille ds cette zone et donc je n'aurais pas de scroll horizontal. Quel layout utiliser dans ce cas ?

    En clair, j'ai besoin de vos lumières !!!!

    Merci

  2. #2
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    Citation Envoyé par manusweb
    J'aimerais que le scroll horizontal de la zone 2 soit en haut de l'ecran et surtout qu'il reste fixe meme lorsque je scroll vers le bas ( Via mon 1er jscrollpane )
    Je n'ai pas compris grand chose a ton explication et surtout cette partie la !!

    Comment ca un scroll horizontal en haut de l'ecran. Combien de scrollpane as tu ?? Je ne comprends pas ton pb.

  3. #3
    Membre régulier
    Inscrit en
    Juin 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 9
    Par défaut Complement
    J'essaie de mieux t'expliquer.

    1. J'ai un JScrollPane qui contient un JSplitPane. ( On l'appelle JSP1 )
    2. Dans mon JSplitPane, j'ai encore un JScrollPane ( On l'appelle JSP2 )

    JSP1 a pour propiété un scrollbar H à never et un scrollbar V à ALWAYS
    JSP2 a pour propiété un scrollbar H à ALWAYS et un scrollbar V à NEVER

    Par défaut, le scroll de JSP2 est situé en bas. Mais puisqu'il est deja ds JSP1, il faut que j'aille en bas de JSP1 pour visualiser la scrollbar de JSP2.

    C'est vraiment pas evident.

    Ce que je voudrais c'est dans mon JSPlitPane, c'est ke je puisse piloter un panel avec un scrollbar situer en dehors.

    Est ce que la tu vois ?

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,



    Je n'ai pas compris exatement comment tu t'y prend ni ce que tu veux exactement...

    Par contre je pense qu'il serait nettement plus simple d'utiliser un seul JScrollPane sur la zone 2 avec un "rowHeader" pour la zone 1...

    Un exemple avec deux JTable lié de la sorte : La scrollbar vertical fait bouger les deux en même temps, alors que la scrollbar horizontal ne concerne que la zone 2 :

    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
    public class Main {
     
     
    	public static void frame() {
     
    		// Création des données de la zone 1
    		Object[][] header = new Object[80][1];
    		for (int i=0; i<80; i++) {
    			header[i][0] = "Header " + i;
    		}
     
    		// Création des données de la zone 2
    		Object[][] data = new Object[80][7];
    		for (int i=0; i<80; i++) {
    			data[i][0] = "Ligne " + i;
    			data[i][1] = "Texte";
    			data[i][2] = new Integer(i * 1111);
    			data[i][3] = "Exemple de texte";
    			data[i][4] = "Autre chose...";
    			data[i][5] = "Encore...";
    			data[i][6] = "et encore...";
    		}
     
    		// Création des deux JTables :
    		JTable zone1 = new JTable(header, new String[]{""});
    		JTable zone2 = new JTable(data, new String[]{"A", "B", "C", "D", "E", "F", "G"});
     
    		// On désactive l'autoresize afin que la scrollbar horizontal soit visible :
    		zone2.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
     
    		// On crée un JScrollPane pour la zone 2 :
    		JScrollPane scrollPane = new JScrollPane(zone2);
    		// Auquel on utilise la zone1 comme "header" pour les lignes :
    		scrollPane.setRowHeaderView(zone1);
    		// On force cette dernière à une taille de 80 pixel de large (la hauteur est ignoré)
    		scrollPane.getRowHeader().setPreferredSize(new Dimension(80,0));
     
     
    		// Creation de la fenêtre
    		JFrame frame = new JFrame("TEST");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setSize(400,400);
    		frame.setLocationRelativeTo(null);
    		frame.getContentPane().add(scrollPane);
    		frame.setVisible(true);
     
    	}
     
     
    	public static void main(String args[]) throws Exception {
     
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				frame();
    			}
    		});
    	}
     
    }
    a++

  5. #5
    Membre expérimenté Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Par défaut
    J'ai compris ce que tu veux faire mais ton systeme ne va pas marcher car tes scrollpane sont imbrique comme tu le dis.
    La methode que te donne adiGuba peut fonctionner dans ton cas.

  6. #6
    Membre régulier
    Inscrit en
    Juin 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 9
    Par défaut Resolu enfin presque
    Nikel !!

    Effectivement, la méthode setRowHeaderView était la solution.
    Il me reste un souci sur le panel qui est définit en temps que RowHeader.
    Quand je défile vers le bas, mon panel ZONE1 est bug graphiquement.

    En clair, ce panel comprend de multiple label. Par défaut, des labels sont présent ds la partie "caché" par le scrollpane et lorsque j'utilise les scrollbar, j'ai des labels vides qui s'affiche. Un vrai pb graphique, car les objects sont la ...

    J'ai tenté un repaint mais ça marche pas.

    MErci à vous.

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

Discussions similaires

  1. [Bloqué]Macro autoexec casse tete
    Par torNAdE dans le forum Access
    Réponses: 24
    Dernier message: 12/07/2006, 15h09
  2. Tube nommé: un casse tête
    Par yashiro dans le forum Linux
    Réponses: 2
    Dernier message: 28/06/2006, 09h11
  3. Requete Casse tete... Help..
    Par Jerome218 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/01/2006, 05h57
  4. casse tete de requete
    Par moutey dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/12/2004, 14h00
  5. [casse-tete (pour moi)] recuperer la largeur d'un <div>
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 05/11/2004, 07h39

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