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 de JSplitPane


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut Affichage de JSplitPane
    Bonjour,

    J'aimerais afficher une fenêtre comprenant un JSplitPane.

    Dans la partie supérieure du JSplitPane, il y a un champs texte dans lequel l'utilisateur entre un nombre. La partie inférieure du JSplitPane ne devant pas être visible au départ.
    Puis, en fonction du nombre saisi par l'utilisateur, il faudrait que la partie inférieure du JSplitPane s'affiche avec à l'intérieur, autant de JComboBox que le nombre saisi par l'utilisateur.

    Mon problème est que je n'arrive pas à faire apparaître la partie inférieure du JSplitPane, ou en tout cas, je n'arrive pas à retailler ma fenêtre principale pour afficher le contenu du JSplitPane.

    Quelqu'un saurait-il ce qu'il faut que je fasse?

    Un peu de code pour vous éclairer :
    - mon construteur :
    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
     
     
    		setTitle("Configuration du tableau");
    		setModal(true);
    		setResizable(true);
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     
    		getContentPane().setLayout(new BorderLayout());
     
    		// subdivision of the window :
    		// - top part <=> column number text field
    		// - bottom part <=> columns caracteristics combo
    		splitPaneVertical = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
    		getContentPane().add(splitPaneVertical, BorderLayout.CENTER);
     
    		// top part : column number text field
    		JPanel colNumberPanel = new JPanel();
    		splitPaneVertical.add(colNumberPanel, JSplitPane.LEFT);
     
    		colNumberPanel.setSize(260, 35);
    		colNumberPanel.setPreferredSize(new Dimension(260, 35));
    		colNumberPanel.setLayout(new FlowLayout());
     
    		JLabel label = new JLabel("Nombre de colonnes :");
    		nbColumn = new JTextField();
    		nbColumn.setSize(30, 20);
    		nbColumn.setPreferredSize(new Dimension(30, 20));
    		nbColumn.addKeyListener(new KeyListener() {
    			public void keyPressed(KeyEvent arg0) {
    				if (arg0.getKeyChar() == KeyEvent.VK_ENTER) {
    					createCaracteristics();
    					splitPaneVertical.add(colCaracteristicsPanel, JSplitPane.RIGHT);
    					splitPaneVertical.repaint();
    				}
    			}
    			public void keyReleased(KeyEvent arg0) {
    			}
    			public void keyTyped(KeyEvent arg0) {
    			}
    		});
    		colNumberPanel.add(label);
    		colNumberPanel.add(nbColumn);
     
    		// bottom part : columns caracteristics combo
    		colCaracteristicsPanel = new JPanel();
     
    		// buttons
    		JPanel buttonsPanel = new JPanel();
    		getContentPane().add(buttonsPanel, BorderLayout.SOUTH);
    		buttonsPanel.setSize(300, 35);
    		buttonsPanel.setPreferredSize(new Dimension(300, 35));
    		buttonsPanel.setMaximumSize(new Dimension(300, 35));
    		buttonsPanel.setLayout(new FlowLayout());
     
    		JButton bOk = new JButton("OK");
    		[...]
    		JButton bCancel = new JButton("Cancel");
    		[...]
    		JButton bSave = new JButton("Save");
                                    [...]
    		buttonsPanel.add(bSave);
    		buttonsPanel.add(bOk);
    		buttonsPanel.add(bCancel);
     
     
    		setLocation(CreateDefectTableDialog.getCenterPosition(this));
    		this.pack();
    - la méthode createCaracteristics() :
    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
     
    private void createCaracteristics() {
    		int nb = new Integer(nbColumn.getText()).intValue();
    		colCaracteristicsPanel.setLayout(new GridLayout(nb, 0, 5, 5));
    		JLabel lab;
    		JComboBox combo;
     
    		for (int i = 0; i < nb; i++) {
    			int cpt = i + 1;
    			lab = new JLabel("Colonne " + cpt);
    			combo = new JComboBox(carChoices);
    			colCaracteristicsPanel.add(lab);
    			colCaracteristicsPanel.add(combo);
    		}
    		this.repaint();
    		this.pack();
    	}
    Merci d'avance!

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Essai en utilisant la méthode setDividerLocation() de JSplitPane pour placer la division où tu veux.
    Ensuite tu fais une division vertical et tu utilise les constante RIGHT et LEFT au lieu de TOP et BOTTOM.
    Et à ta place pour ne pas me tromper j'utiliserai les méthodes setTopComponent(Component) et setBottomComponent(Component) plutot que add. Mais bon ca ne change pas grand chose en soit.
    Voila peut etre que tout ca resoudra tes problemes.

  3. #3
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Citation Envoyé par barbu0055
    Essai en utilisant la méthode setDividerLocation() de JSplitPane pour placer la division où tu veux.
    Au départ, c'est bon, la séparation n'est pas visible et je ne veux pas qu'elle le soit.

    Citation Envoyé par barbu0055
    Ensuite tu fais une division vertical et tu utilise les constante RIGHT et LEFT au lieu de TOP et BOTTOM.
    C'est déjà ce que je fais...


    Par contre, comment retailler ma JDialog pour qu'elle s'adapte à la somme des tailles des différents JPanel que j'ai à l'intérieur?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    |---------------------------------------|
    |                  JPanel1              |
    |---------------------------------------|
    |                                       |
    |                  JPanel2              |
    |                                       |
    |---------------------------------------|
    |                  JPanel3              |
    |---------------------------------------|
    Ma JDialog englobe ces 3 JPanel. JPanel1 et JPanel3 sont de taille fixe.
    Dans JPanel2, j'ai mon JSplitPane dont la partie inférieure change de taille.
    Et je ne sais pas comment adapter la taille de ma JDialog pour que tout soit visible...

    PS : saleté de mise en forme qui vire les espaces... Tous les "|" sont alignés...
    PPS: pour la mise en page ya les modos

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Tu peux t en sortir avec la méthode paintComponent, je l'ai testé et ca marche très bien. Maintenant à toi de l'adapter (on va pas tout te faire quand même )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class myJSplitPane extends JSplitPane
    {
    	myJSplitPane(int type)
    	{
    		super(type);
    	}
     
    	public void paintComponent(Graphics g) {
    		super.paintComponent(g);
                    //g mis 100, tu met la taille que tu veux
    		this.setDividerLocation(this.getHeight()-100);
    	}
    }

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Citation Envoyé par barbu0055
    (on va pas tout te faire quand même )
    Je n'en demande pas tant... Quoique

    Merci, je teste tout de suite...

  6. #6
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Citation Envoyé par barbu0055
    Tu peux t en sortir avec la méthode paintComponent, je l'ai testé et ca marche très bien. Maintenant à toi de l'adapter (on va pas tout te faire quand même )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class myJSplitPane extends JSplitPane
    {
    	myJSplitPane(int type)
    	{
    		super(type);
    	}
     
    	public void paintComponent(Graphics g) {
    		super.paintComponent(g);
                    //g mis 100, tu met la taille que tu veux
    		this.setDividerLocation(this.getHeight()-100);
    	}
    }
    Juste une petite question en passant : vu que j'ai pas d'objet de type "Graphics", je fais comment pour appliquer paintComponent()? :

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    paintComponent est appelé automatiquement à chaque fois que ton composant est modifié. Donc dans le cas du redimensionnement ...
    Tu n as pas à faire appelle à cette méthode.

  8. #8
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Là tu parles de redimensionnement manuel de la fenêtre?

    Parce que moi, je voudrait que ce soit automatique quand des composants sont ajoutés au JSplitPane...

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    ha ben g du mal comprendre tes besoins.

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Je viens de relire.
    Ton probleme ne vient pas du JSplitPane en fait, mais de ta JDialog? C bien ca?
    Est ce que tu as essayé la méthode pack() sur ta fenêtre JDialog ?

  11. #11
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Aaaaah! Là on parle de la même chose...

    J'ai essayé la méthode pack(). Mais peut-etre pas au bon endroit...
    J'ai essayé de mettre des setPreferredSize() un peu partout, mais je dois mal m'en servir...

Discussions similaires

  1. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 10h21
  2. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 22h00

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