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 :

Divider location dans un split pane


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de taha1
    Femme Profil pro
    débutantE ^ ^
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : débutantE ^ ^

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut Divider location dans un split pane
    Bonjour ,
    j'ai un JSplitPane(splitpane) qui contient 2 JPanel: traceField à gauche et InfoField à droite
    mon problème et que je veux au départ que la barre verticale qui sépare les 2 JPanel soit au milieu du splitpane quand j'affiche ma fenêtre voilà le code de la fonction qui remplie mon splitpane
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private void initsplitpane() {
    		traceField.setBackground(Color.WHITE);
    		infoField.setBackground(Color.WHITE);
    		traceField.setAutoscrolls(true);
     
    		this.splitpane.setLeftComponent(traceField);
    		this.splitpane.setRightComponent(infoField);
    		splitpane.setContinuousLayout(true);
    		splitpane.setOneTouchExpandable(true);
    		splitpane.setDividerLocation(0.5); }
    j'ai pensé que la fonction setDividerLocation était la bonne pour mon besoin mais à l'affichage le séparateur des 2 Jpanel se met automatiquement à gauche et pas au centre.
    j'ai trouver que la méthode setDividerLocation peut accepter ou bien un int ou bien un double qui représente le pourcentage par par rapport à la taille de splitpane.
    j'ai essayé de voir les dimension de mon splitpane
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("height and width" +splitpane.getSize().height+" "+splitpane.getSize().width );
    à ma surprise j'obtiens ceci
    height and width 0 0 ??
    pourtant ma JFrame principale à une taille de 700*700 et mon splitpane est dans un JPanel pane (BorderLayout.CENTER) .



  2. #2
    Membre très actif Avatar de taha1
    Femme Profil pro
    débutantE ^ ^
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : débutantE ^ ^

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut
    alors, j'ai pas réussi à trouver une solution à mon problème en passant par splitpane donc j'ai décider de passer plutôt par le screen size ( j'aurais aimer évitez de nouvelle instanciation )

  3. #3
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    This method is implemented in terms of setDividerLocation(int). This method immediately changes the size of the split pane based on its current size. If the split pane is not correctly realized and on screen, this method will have no effect (new divider location will become (current size * proportionalLocation) which is 0)

    il faut que ton splitpane soit visible

  4. #4
    Membre très actif Avatar de taha1
    Femme Profil pro
    débutantE ^ ^
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : débutantE ^ ^

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut
    ça marche pas
    voilà ma nouvelle fonction
    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
    private void initsplitpanel(){
    		traceField.setBackground(Color.WHITE);
    		infoField.setBackground(Color.WHITE);
    		traceField.setAutoscrolls(true);
    		splitpane.setVisible(true);
     
     
     
     
    		this.splitpane.setLeftComponent(traceField);
    		this.splitpane.setRightComponent(infoField);
    		splitpane.setContinuousLayout(true);
    		splitpane.setOneTouchExpandable(true);
    		System.out.println(splitpane.getWidth());
    		splitpane.setDividerLocation(0.5);
    		this.pane.add(splitpane, BorderLayout.CENTER);
     
    	}
    et voilà le résultat du println 0

  5. #5
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    ton setDividerLocation doit etre fait aprés que ta fenetre soit visible, dans l'init c'est trop tot. (ton panel n'as pas de taille celle ci dépend de ta fenetre)

  6. #6
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    un exemple du net :

    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
     
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.HierarchyEvent;
    import java.awt.event.HierarchyListener;
     
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JSplitPane;
     
    public class MainClass {
      public static void main(String args[]) throws Exception {
        JFrame vFrame = new JFrame("Vertical Split");
        vFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JComponent leftButton = new JButton("Left");
        JComponent rightButton = new JButton("Right");
        final JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
        splitPane.setOneTouchExpandable(true);
        splitPane.setLeftComponent(leftButton);
        splitPane.setRightComponent(rightButton);
     
        ActionListener oneActionListener = new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            splitPane.resetToPreferredSizes();
          }
        };
        ((JButton) rightButton).addActionListener(oneActionListener);
     
        ActionListener anotherActionListener = new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            splitPane.setDividerLocation(10);
            splitPane.setContinuousLayout(true);
          }
        };
     
        ((JButton) leftButton).addActionListener(anotherActionListener);
     
        HierarchyListener hierarchyListener = new HierarchyListener() {
          public void hierarchyChanged(HierarchyEvent e) {
            long flags = e.getChangeFlags();
            if ((flags & HierarchyEvent.SHOWING_CHANGED) == HierarchyEvent.SHOWING_CHANGED) {
              splitPane.setDividerLocation(.75);
            }
          }
        };
        splitPane.addHierarchyListener(hierarchyListener);
     
        vFrame.add(splitPane, BorderLayout.CENTER);
        vFrame.setSize(300, 150);
        vFrame.setVisible(true);
      }
     
    }

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

Discussions similaires

  1. loadMovie dans un content pane?
    Par Prosis dans le forum Flash
    Réponses: 4
    Dernier message: 03/03/2007, 15h57
  2. Comme faire un locate dans un TTable
    Par Cazaux-Moutou-Philippe dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/01/2007, 10h56
  3. [C#]dialogue "dynamique" dans un split container
    Par casa13 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 11/01/2006, 17h58
  4. window.location dans une variable ?
    Par jpic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/12/2005, 17h24
  5. [Merci] [ADO] Options de Locate dans une BD Access
    Par Jilam dans le forum Bases de données
    Réponses: 4
    Dernier message: 11/11/2004, 11h52

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