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 :

[boxLayout] taille de panel


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut [boxLayout] taille de panel
    Bonjour,

    Avant que je n'ai plus de chaveux pour cause d'arrachage psychotique (oué a ce point là), j'appel à l'aide ... je ne comprend pas .. j'ai un panel dans un boxLayout verticla qui s'amuse a prendre toute sorte de taille plus ou moins aléatoirement .... oscouuur...

    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.util.ArrayList;
     
    import javax.swing.BorderFactory;
    import javax.swing.BoxLayout;
    import javax.swing.JComponent;
    import javax.swing.JPanel;
     
     
    public class BestAlignement extends JPanel{
     
     
     
    	private ArrayList _paramSetList;
    	private ArrayList _geneList;
    	private int _selectedParam;
    	BAGraph _baGraph;
    	BAParamTabPan _baParamTabPan;
    	GenesInfoZone _baInfo;
    	private static final long serialVersionUID = 39L;
     
    	BestAlignement(BestAlignementParamSet param, BAMain baMain)
    	{
    		super();
     
    		_geneList = baMain.getGeneList();
    		this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    		_paramSetList = new ArrayList();
    		_selectedParam = 0;
    		_paramSetList.add(param);
    		this.setBorder(BorderFactory.createLineBorder(Color.black));
    		_baGraph = new BAGraph(param, this);
    		this.add(_baGraph);
    		_baParamTabPan = new BAParamTabPan(this);
    		this.add(_baParamTabPan);
    		_baInfo = new GenesInfoZone(this);
    		this.add(_baInfo);
    	}
     
     
    	public void addParamSet(BestAlignementParamSet newSet)
    	{
    		_paramSetList.add(newSet);
    		_baParamTabPan.newParamSet(newSet);
     
    	}
     
    	public void ParamModificationNotification(BestAlignementParamSet param)
    	{
    		_baParamTabPan.paramModification(param);
    	}
     
     
    	BestAlignementParamSet getSelectedParam()
    	{
    		return (BestAlignementParamSet)(_paramSetList.get(_selectedParam));
    	}
     
    	ArrayList getParamList()
    	{
    		return _paramSetList;
    	}
     
    	ArrayList getGeneList()
    	{
    		return _geneList;
    	}
     
    	public void changeSelectedParam(BestAlignementParamSet param)
    	{
    		for (int i = 0 ; i< _paramSetList.size(); i++)
    		{
    			if(((BestAlignementParamSet)_paramSetList.get(i)).equals(param))
    			{
    				_selectedParam = i;
    				Dimension dim = _baGraph.getSize();
    				this.remove(_baGraph);
    				_baGraph = new BAGraph(param, this);
     
    				_baGraph.setSize(dim);
    				this.add(_baGraph,0);
    				this.revalidate();
    				return;
    			}
    		}
    	}
     
    }
    celui qui s'amuse c'est BAGraph ... le _baParamTabPan est un tabbedPane dont j'ai fixé la hauteur a 100 pixel et lui ca marche.
    Le _bagraph je voudrais le "fixé) a une tierre de la hauteur de ce panel.

    J'ai tout essayer et le pire c'est que ca marchais sous window hier mais ca marche plus sous linux T T ....

    le code du BAGraph

    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
    80
    81
    82
    83
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
     
    import javax.swing.BorderFactory;
    import javax.swing.JComponent;
    import javax.swing.JPanel;
     
     
    public class BAGraph extends JPanel{
     
    	JComponent _parent;
    	PositionScrollPanel _positions;
    	PhaseScrollPanel _phases;
    	BAGraphPan _graph;
    	private static final long serialVersionUID = 34L;
    	BestAlignementParamSet _param;
     
    	BAGraph( BestAlignementParamSet param,  BestAlignement parent)
    	//BAGraph(ArrayList list, boolean circular , BestAlignement parent, float phase, float error)
    	{
    		super();
    		this.setLayout(null);
    		this.setBackground(Color.BLACK);
    		_param = param;
    		_parent = parent;
    		_positions = new PositionScrollPanel(_param, this);
    		this.add(_positions);
    		_phases = new PhaseScrollPanel(_param, this);
    		this.add(_phases);
    		_graph= new BAGraphPan(_param, parent, _positions, _phases);
    		this.add(_graph);
    this.setBorder(BorderFactory.createLineBorder(Color.pink));
     
    		//this.setBounds(0,0 , _parent.getWidth(), _parent.getHeight());
    		this.setPreferredSize(new Dimension(_parent.getWidth(),_parent.getHeight()/3));
    		//this.setSize(new Dimension(_parent.getWidth(),_parent.getHeight()/3));
    		//_phases.setBounds(0, 0, 30, this.getHeight()-30);
    		//_graph.setBounds(30, 0, this.getWidth()-30, this.getHeight()-30);
    		//_positions.setBounds(30, this.getHeight()-30, this.getWidth()-30, 30);
    	}
     
    	/**BAGraph( ParamSet param,  BestAlignement parent)
            {
                    super();
                    _parent = parent;
                    _positions = new PositionScrollPanel(parent.getParam().getStartPos(), parent.getParam().getEndPos(), parent.getParam().getPeriod(), this);
                    this.add(_positions);
                    _phases = new PhaseScrollPanel(phase, this);
                    this.add(_phases);
                    _graph= new BAGraphPan(_positions, _phases, list, parent, phase, error);
                    this.add(_graph);
     
                    
                    //this.setBounds(0,0 , _parent.getWidth(), _parent.getHeight());
                    //this.setPreferredSize(new Dimension(_parent.getWidth(),200));
                    _phases.setBounds(0, 0, 30, this.getHeight()-30);
                    _graph.setBounds(30, 0, this.getWidth()-30, this.getHeight()-30);
                    _positions.setBounds(30, this.getHeight()-30, this.getWidth()-30, 30);
            }*/
     
    	public void updateDrawGraph()
    	{
    		_graph.repaint();
    	}
     
    	public void paintComponent(Graphics g)
    	{
     
    		super.paintComponent(g);
    		this.setPreferredSize(new Dimension(_parent.getWidth(),_parent.getHeight()/3));
    		this.setMaximumSize(new Dimension(_parent.getWidth(),_parent.getHeight()/3));
    		///this.setSize(new Dimension(_parent.getWidth(),_parent.getHeight()/3));
    		System.out.println("MEEEE "+this.getSize()+ " "+ _parent.getHeight()/3);
    		g.clearRect(0, 0, this.getWidth(),this.getHeight());
    	//	_phases.setBounds(0, 0, 30, this.getHeight()-30);
    	//	_graph.setBounds(30, 0, this.getWidth()-30, this.getHeight()-30);
    	//	_positions.setBounds(30, this.getHeight()-30, this.getWidth()-30, 30);
     
    		System.out.println("MEEEE "+this.getSize());
    	}
    }
    Plein de truc en commentaire j'ai essayé plein de chose mais ca veux vraiment pas marcher ....

  2. #2
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Citation Envoyé par Lady
    J'ai tout essayer et le pire c'est que ca marchais sous window hier mais ca marche plus sous linux T T ....
    Si tu veux éviter ce genre de surprise, n'utilise pas les layout null... Utilise par exemple le GridBagLayout qui te permet de placer tes composants comme tu le souhaites sans ne jamais parler de pixel ou de système d'exploitation...

    EDIT : mais tandis que je me relis, je m'aperçoit que c'est déjà ce même conseil que j'avais donné à Lady
    Faut écouter ce qu'on dit fois hein

  3. #3
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    Citation Envoyé par Claythest
    Si tu veux éviter ce genre de surprise, n'utilise pas les layout null... Utilise par exemple le GridBagLayout qui te permet de placer tes composants comme tu le souhaites sans ne jamais parler de pixel ou de système d'exploitation...

    EDIT : mais tandis que je me relis, je m'aperçoit que c'est déjà ce même conseil que j'avais donné à Lady
    Faut écouter ce qu'on dit fois hein
    Mias j'ai mis un BoxLayout !!! c'est pas mon layout null qui marche pas !!! de plus dans mon graphPan c plus ou moins du dessin (je veux dire je ne ferais que remonter le pb mais 3 panel dedans sont des panel de dessin).

    Par contre j'ai cru voir sur l'api une note sur la possibilité que le boxLayout ne soit plus compatible entre 1.4 et 1.5 est ce le cas .. nan car ca marche sous 1.5 mais pas 1.4 ...

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En ce qui concerne le BoxLayout, la taille se calcule à partir de la preferredSize du composant.
    Si ton composant peut avoir une taille variable, le plus propre serait de le mettre dans un JScrollPane possédant l'avantage lui de ne parier de taille.

  5. #5
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Citation Envoyé par Lady
    [...]
    celui qui s'amuse c'est BAGraph ...
    [...]
    le code du BAGraph

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [...]
    		this.setLayout(null);
    [...]

  6. #6
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    Citation Envoyé par Claythest

    oui je sais mais ce que je veux dire c'est que je ne suis pas certaine que ca fonctionne en remontant le problème ... de plus le GridBagLayout ne me permettra pas d'avoir le comportement que je recherche ..

    Ce qui m'embête le plus dans cette histoire c'est la différence de comportement du layout selon l'OS ....

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

Discussions similaires

  1. StackPanel à orientation horizontale : ajustement du contenu à la taille du panel
    Par seiryujay dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 23/01/2009, 19h03
  2. [SWING] Donner la taille à un Panel avec Grid Layout
    Par Goupo dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 08/06/2007, 00h58
  3. [JScrollPane] Taille du panel variable
    Par Parkatm dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 17/04/2007, 10h59
  4. Taille de panel
    Par jchenoy dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 01/04/2007, 20h25
  5. [Debutant Swing] Taille des panels variable
    Par NhyMbuS dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/01/2006, 09h11

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