Java FlowLayout - Margin/padding des éléments spécifiques?
Je suis très nouveau à Swing, et je suis en train de faire une interface graphique.
À l'aide de Netbeans' GUI créateur chose, j'ai réussi à faire quelque chose que j'aimais. Mais il me fait me sentir mal que j'ai utilisé l'éditeur de ce, maintenant je suis en train de faire la même conception à l'aide de code.
Voici une photo de ce que je suis en train de faire:
Droit maintenant, je suis juste en se concentrant sur la création de la "Critères" (oui, je sais que j'ai mal écrit dans l'image)
Voici ce que j'ai actuellement:
J'ai surligné en rouge là où je veux augmenter la marge:
- Entre le droit des zones de texte et à gauche de la étiquettes
- Entre le haut de l'Critères de panneau et de la JFrame
- Entre les côtés gauche et droit du panneau et de la JFrame
Je viens de développement web où l'augmentation de la marge est-ce que je veux faire. Si c'est une terminologie erronée, veuillez m'en informer.
Voici le code que j'utilise actuellement:
public class Criteria extends JPanel {
JLabel JobLabel = new JLabel();
JLabel BoxLabel = new JLabel();
JLabel PartLabel = new JLabel();
JTextField JobInput = new JTextField();
JTextField BoxInput = new JTextField();
JTextField PartInput = new JTextField();
public Criteria() {
setLayout(new FlowLayout(FlowLayout.LEADING));
setBorder(BorderFactory.createTitledBorder("Criteria"));
JobLabel.setText("Job");
JobLabel.setLabelFor(JobInput);
BoxLabel.setText("Box");
BoxLabel.setLabelFor(BoxInput);
PartLabel.setText("Part");
PartLabel.setLabelFor(PartInput);
JobInput.setColumns(8);
BoxInput.setColumns(8);
PartInput.setColumns(8);
add(JobLabel);
add(JobInput);
add(BoxLabel);
add(BoxInput);
add(PartLabel);
add(PartInput);
}
}
Je ne sais pas comment je pourrais ajouter de marge de ces composants, donc de l'aide serait très appréciée. Si je ne peux pas obtenir cet effet avec FlowLayout, alors s'il vous plaît dites-moi ce que je dois utiliser à la place.
OriginalL'auteur fruitcup | 2012-06-09
Vous devez vous connecter pour publier un commentaire.
Swing a tendance à appeler les marges ou les frontières "lacunes". Le
FlowLayout
classe (avec quelques autres classes de layout) vous permet de définir l'horizontale et à la verticale lacunes dans son constructeur, comme suit:Ce serait ajouter un rembourrage entre les étiquettes et les zones de texte, cependant, mais vous pouvez envelopper chaque paire dans un
JPanel
(probablement avec unFlowLayout
). Je voudrais faire un composant personnalisé de classe pour cette.Ah. Je ne suis pas au courant de toute façon de le faire de manière sélective, mais vous pouvez envelopper chaque légende et de la zone de texte dans leurs propres Composite. Ce que je voudrais faire est de créer un composant personnalisé (extension Composite) qui contient la légende et de la zone de texte, dans une sorte de mise en page (probablement un FlowLayout) et puis les ajouter à votre principal FlowLayout panneau.
Qui fonctionne parfaitement. Vous devez mettre à jour votre réponse à inclure, puis je vais le marquer comme acceptée. Je vous remercie. 🙂
Grand, c'est fait. Ravi de vous aider.
OriginalL'auteur Harry Cutts
Vous devriez regarder dans l'aide d'une EmptyBorder pour donner à vos composants "padding". Vous pouvez créer des composés frontières ou pouvez imbriquer des JPanels si vous avez besoin de plus d'un type de bordure autour d'un Composite ou d'un autre composant. Pour les écarts entre les composants, vous pouvez utiliser le FlowLayout les paramètres comme indiqué ci-dessus, ou peuvent utiliser une jambe à partir de la classe de la Boîte.
OriginalL'auteur Hovercraft Full Of Eels