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 :

Problème GridBagLayout et JSlider


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut Problème GridBagLayout et JSlider
    Bonjour j'aimerais savoir pourquoi mon panel
    ne prends pas le bon layout. svp



    J'ai fait un gridbaglayout et il me fait tout a la suite comme un Flow.

    De + je n'arrive pas a SETer la couleur de mon Background en récupérant les valeurs de mes JSliders...

    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    import java.awt.Color;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JSlider;
    import javax.swing.JTextField;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
     
    public class Exa extends JFrame {
    	final static boolean shouldFill = true;
    	final static boolean shouldWeightX = true;
    	final static boolean RIGHT_TO_LEFT = false;
    	private JSlider jsr = new JSlider(JSlider.VERTICAL, 0, 255, 0);
    	private JSlider jsv = new JSlider(JSlider.VERTICAL, 0, 255, 0);
    	private JSlider jsb = new JSlider(JSlider.VERTICAL, 0, 255, 0);
    	private JTextField jtfrouge = new JTextField("0", 4);
    	private JTextField jtfvert = new JTextField("0", 4);
    	private JTextField jtfbleu = new JTextField("0", 4);
    	private JLabel labelR = new JLabel("Rouge");
    	private JLabel labelV = new JLabel("Vert");
    	private JLabel labelB = new JLabel("Bleu");
    	private JLabel labelDec = new JLabel("Déc.");
    	private JLabel labelOct = new JLabel("Oct.");
    	private JLabel labelHex = new JLabel("Hex.");
    	private JComboBox couleurs = new JComboBox();
    	private JButton btAnnuler = new JButton("Annuler");
    	private GridBagConstraints c = new GridBagConstraints();
    	private int valeurSliderRouge;
    	private int valeurSliderVert;
    	private int valeurSliderBleu;
     
    	public Exa() {
    		JPanel p = new JPanel();
    		Contenu contenu = new Contenu();
    		getContentPane().add(p);
    		p.setLayout(new GridBagLayout());
    		c.insets = new Insets(5, 5, 3, 3);
    		p.add(contenu);
    		// setSize(250, 600);
    		setResizable(false);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setLocationRelativeTo(null);
    	}
     
    	class Contenu extends JPanel implements ActionListener {
     
    		public Contenu() {
    			if (shouldFill) {
    				// natural height, maximum width
    				c.fill = GridBagConstraints.HORIZONTAL;
    			}
    			jtfrouge = new JTextField("0", 4);
    			jtfrouge.setBackground(Color.RED);
    			jtfrouge.setHorizontalAlignment(JTextField.CENTER);
    			jtfrouge.addActionListener(this);
     
    			jtfvert = new JTextField("0", 4);
    			jtfvert.setBackground(Color.green);
    			jtfvert.setHorizontalAlignment(JTextField.CENTER);
    			jtfvert.addActionListener(this);
     
    			jtfbleu = new JTextField("0", 4);
    			jtfbleu.setBackground(Color.blue);
    			jtfbleu.setHorizontalAlignment(JTextField.CENTER);
    			jtfbleu.addActionListener(this);
     
    			btAnnuler.addActionListener(this);
     
    			jsr.addChangeListener(new ChangeListener() {
    				public void stateChanged(ChangeEvent e) {
    					System.out.println(jsr.getValue());
    					valeurSliderRouge = jsr.getValue();
    				}
    			});
     
    			jsv.addChangeListener(new ChangeListener() {
    				public void stateChanged(ChangeEvent e) {
    					System.out.println(jsv.getValue());
    					valeurSliderVert = jsv.getValue();
    				}
    			});
     
    			jsb.addChangeListener(new ChangeListener() {
    				public void stateChanged(ChangeEvent e) {
    					System.out.println(jsb.getValue());
    					valeurSliderBleu = jsb.getValue();
    				}
    			});
     
     
    			jsr.setPaintTicks(true);
    			jsr.setMajorTickSpacing(25);
    			jsr.setMinorTickSpacing(5);
    			jsr.setPaintLabels(true);
    			jsr.setOpaque(false);
     
    			jsv.setPaintTicks(true);
    			jsv.setMajorTickSpacing(25);
    			jsv.setMinorTickSpacing(5);
    			jsv.setPaintLabels(true);
    			jsv.setOpaque(false);
     
    			jsb.setPaintTicks(true);
    			jsb.setMajorTickSpacing(25);
    			jsb.setMinorTickSpacing(5);
    			jsb.setPaintLabels(true);
    			jsb.setOpaque(false);
     
    			this.setBackground(new Color(0, 0, 0));
     
    			if (shouldWeightX) {
    				c.weightx = 0.5;
    			}
     
    			c.gridx = 0;
    			c.gridy = 0;
    			add(jtfrouge, c);
     
    			c.gridx = 0;
    			c.gridy = 1;
    			add(jtfvert, c);
     
    			c.gridx = 0;
    			c.gridy = 2;
    			add(jtfbleu, c);
     
    			c.gridx = 1;
    			c.gridy = 0;
    			add(labelDec, c);
     
    			c.gridx = 1;
    			c.gridy = 1;
    			add(labelOct, c);
     
    			c.gridx = 1;
    			c.gridy = 2;
    			add(labelHex, c);
     
    			c.gridx = 2;
    			c.gridy = 1;
    			add(btAnnuler, c);
     
    			c.gridx = 3;
    			c.gridy = 0;
    			add(labelR, c);
     
    			c.gridx = 3;
    			c.gridy = 1;
    			add(labelV, c);
     
    			c.gridx = 3;
    			c.gridy = 2;
    			add(labelB, c);
     
    			c.gridx = 4;
    			c.gridy = 0;
    			add(jsr, c);
     
    			c.gridx = 4;
    			c.gridy = 1;
    			add(jsv, c);
     
    			c.gridx = 4;
    			c.gridy = 2;
    			add(jsb, c);
     
    			c.gridx = GridBagConstraints.REMAINDER;
    			c.gridx = 5;
    			c.gridy = 1;
    			add(couleurs, c);
    		}
     
    		public void actionPerformed(ActionEvent e) {
    			if (e.getSource().equals(btAnnuler)) {
    				jtfrouge.setText("0");
    				jtfvert.setText("0");
    				jtfbleu.setText("0");
    				this.setBackground(new Color(0, 0, 0));
    			} 
     
    			else {
    				int red = Integer.parseInt(jtfrouge.getText());
    				int green = Integer.parseInt(jtfvert.getText());
    				int blue = Integer.parseInt(jtfbleu.getText());
    				this.setBackground(new Color(red, green, blue));
    			}
    		}
    	}
    }
    Si qqn voit une irrégularité dans mon code,
    ou qqch de flagrant qui lui saute aux yeux

    Je le remercie d'avance de sa réponse

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Montre nous ou explique nous à quoi ça devrait ressembler, ça nous facilitera le travail.

  3. #3
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    sauf erreur de lecture de ma part, tu mets le GridBagLayout sur ton JPanel p, alors que tu ajoutes tes composants au Contenu. Et comme le Layout de base des JPanel est le FlowLayout, c'est normal que tu aies ce résultat.

    A moins qu'il serve à autre chose, tu peux virer le JPanel p et ajouter le Contenu direcement au ContentPane.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut
    Juste pour voir si j'ai bien compris,
    Je pourrais faire un getContentPane().setLayout ?

    Et pour essayer d'expliquer a quoi j'aimerais que ça ressemble,
    J'aimerais qu'en premiere ligne j'aie mes 3 JTextFields
    2ème ligne mes JLabels
    3ème ligne mon JButton
    4ème ligne mes autres JLabel
    5ème ligne mes JSliders
    et pour finir ma JComboBox

    Merci à vous déjà pour ce début de réponse

  5. #5
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Citation Envoyé par CosaNostra Voir le message
    Je pourrais faire un getContentPane().setLayout ?
    Peut être, mais ce n'est pas ce que je suggérais. Ma solution consistait en gros à faire ça:
    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
    public Exa() {
    	Contenu contenu = new Contenu();
    	getContentPane().add(contenu);
    	...
    }
     
    class Contenu extends JPanel implements ActionListener {
    	public Contenu() {
    		setLayout(new GridBagLayout());
    		if (shouldFill) {
    			// natural height, maximum width
    			c.fill = GridBagConstraints.HORIZONTAL;
    		}
    		...
    	}
    }

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Tu as l'air de mélanger gridx et gridy.
    Si tu veux par exemple que tes trois premiers JTextField soient sur la meme ligne, c'est le gridx qu'il faut modifier, pas le gridy.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut
    OK
    mon layout est bon maintenant...
    Merci à vous deux.

    Juste une petite chose que je ne comprends pas maintenant.
    Comment SETer mes JTextField en récupérant les valeurs de mes JSliders
    tout en sachant que les valeurs que je récupère depuis mes JSliders sont des int
    et que dans mes JTextField je ne peux y rentrer que du String
    Car je veux que lorsque je récupère mes valeurs je puisse les voir dans mes JTextField et que ça me change le background depuis les JSliders en temps réel.

    Merci

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Par défaut
    Mon souci réside maintenant à traiter le changelistener pour qu'il me colorie le panel de fond de ma frame en récupérant les getvalue de mes sliders.

    J'arrive a les récupérer et à les afficher dans mes JTextFields mais
    je n'arrive pas a trouver la façon de colorier le fond de ma frame
    en temps réel lorsque je bouge mes sliders...

    J'ai essayé this.setBackgroundColor(new Color(monSlider1.getValue(), monSlider2.getValue(), monslider3.getValue()));

    ça la récupère mais ça ne me paint pas le fond...




    Autre question + par curiosité.
    En fouillant un peu sur google et certains forums JAVA
    je n'ai pas trouvé de méthode permettant de colorier les JSliders mêmes.
    Pensez-vous que c'est possible ?

Discussions similaires

  1. Problème avec un JSlider
    Par Invité dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 26/04/2012, 18h30
  2. Problème GridBagLayout et redimensionnement fenetre
    Par Perbugi dans le forum Débuter
    Réponses: 2
    Dernier message: 29/09/2009, 16h53
  3. Problème avec un jSlider
    Par wawawa dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/04/2007, 12h18
  4. [débutant] problème GridBagLayout
    Par cyrill.gremaud dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 08/11/2006, 10h23
  5. [GridBagLayout] Problème de dimension pour un JScrollPane
    Par cmoa59 dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 26/07/2005, 12h58

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