Comment puis-je obtenir un Composite avec un vide JLabel à prendre de la place dans un GridBagLayout

Je suis en train de travailler sur une interface graphique pour un projet à l'école. Je suis à l'aide d'un GridBagLayout en swing.

Je veux avoir une étiquette indiquant l'entrée(un type de fichier @ x = 0, y = 0), suivi par un autre label(le nom de fichier réel une fois sélectionné @ x = 1, y = 0), suivi par un bouton parcourir pour un sélecteur de fichier( @ x = 2, y = 0). L'étiquette à (1,0) est initialement vide, cependant je veux que la zone que le texte s'occuper de prendre de l'espace lorsque l'étiquette ne contient pas de texte. Je veux aussi que l'espace entre les étiquettes à (0,0) et le bouton à (2,0) rester constante.

Pour atteindre cet objectif, j'essaie de mettre l'étiquette sur un panneau et puis jouer avec les mises en page. Cependant je ne peux pas couture pour atteindre les résultats souhaités. Quelqu'un pourrait-il offrir quelques suggestions? Les trois lignes de la GridBagLayout seront disposés exactement de la même manière.

Voici un lien vers une capture d'écran de l'interface graphique.

Comment puis-je obtenir un Composite avec un vide JLabel à prendre de la place dans un GridBagLayout

    calibrationFileSelectionValueLabel = new JLabel("",Label.LEFT);
calibrationFileSelectionValueLabel.setName("calibrationFileSelection");
calibrationFileSelectionValueLabel.setMinimumSize(new Dimension(100,0));
calibrationFileSelectionValuePanel = new JPanel();
calibrationFileSelectionValuePanel.setBorder(BorderFactory.createEtchedBorder());
calibrationFileSelectionValuePanel.add(calibrationFileSelectionValueLabel);
c.gridx = 0;
c.gridy = 0;
c.fill = GridBagConstraints.NONE;
filesPanel.add(calibrationFileLabel,c);
c.gridy = 1;
filesPanel.add(frequencyFileLabel,c);
c.gridy = 2;
filesPanel.add(sampleFileLabel,c);
c.gridy = 3;
filesPanel.add(outputFileLabel,c);
c.gridx = 1;
c.gridy = 0;
c.fill = GridBagConstraints.BOTH;
//filesPanel.add(calibrationFileSelection,c);
filesPanel.add(calibrationFileSelectionValuePanel,c);
c.gridy = 1;
//filesPanel.add(frequencyFileSelection,c);
filesPanel.add(frequencyFileSelectionValueLabel,c);
c.gridy = 2;
//filesPanel.add(sampleFileSelection,c);
filesPanel.add(sampleFileSelectionValueLabel,c);
c.gridy = 3;
//filesPanel.add(outputFileSelection,c);
filesPanel.add(outputFileSelectionValueLabel,c);
c.gridx = 2;
c.gridy = 0;
c.fill = GridBagConstraints.NONE;
filesPanel.add(calibrationFileSelectionButton,c);
c.gridy = 1;
filesPanel.add(frequencyFileSelectionButton,c);      
c.gridy = 2;
filesPanel.add(sampleFileSelectionButton,c);
c.gridy = 3;
filesPanel.add(createOutputFileButton,c);       
panelForFilesPanelBorder = new JPanel();
panelForFilesPanelBorder.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(5,10,5,10), BorderFactory.createEtchedBorder()));
panelForFilesPanelBorder.add(filesPanel);
buttonsPanel = new JPanel();
buttonsPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
buttonsPanel.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(5,10,10,10), BorderFactory.createEtchedBorder()));
buttonsPanel.add(startButton);
buttonsPanel.add(stopButton);
basePanel.add(panelForFilesPanelBorder);
basePanel.add(numericInputPanel); 
basePanel.add(buttonsPanel); 
faire des photos, de la télécharger quelque part d'autre et l'ajouter à votre question, afin que nous puissions mieux comprendre
Vous pouvez définir le JLabel la taille minimale en appelant setMinimumSize(Dimension d) qui devrait faire ce que vous voulez.
hmmm. Et bien j'ai essayé d'ajouter une image. J'ai besoin de 10 rep voix apparemment.
Ajouter un lien à une image et on peut l'ajouter à votre question pour vous. Qu'en est ma suggestion?
Dans ce cas, avec GridBagLayout réglage de la taille minimale seulement, ne fonctionnera pas. Vérifier ma réponse pour plus de détails et de m'indiquer si tout ce que j'ai expliqué, c'est mal 🙂

OriginalL'auteur restin84 | 2013-11-02