Un Simple menu Déroulant en Java
Je suis en train de travailler sur une interface utilisateur graphique très simple en Java.
En ce GUI je veux afficher:
- Une étiquette avec le texte sur le haut de la page
- Un JComboBox mentionné sous le label
- Un JButton, en vertu de l'mentionnées JComboBox
Voici mon code:
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Prova {
public static void main(String[] args) {
JFrame frame = new JFrame("A Simple GUI");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setLocation(430, 100);
JPanel panel = new JPanel();
frame.add(panel);
JLabel lbl = new JLabel("Select one of the possible choices and click OK");
lbl.setVisible(true);
panel.add(lbl);
String[] choices = { "CHOICE 1","CHOICE 2", "CHOICE 3","CHOICE 4","CHOICE 5","CHOICE 6"};
final JComboBox<String> cb = new JComboBox<String>(choices);
cb.setVisible(true);
panel.add(cb);
JButton btn = new JButton("OK");
panel.add(btn);
}
}
Malheureusement, le résultat que j'obtiens est
Comme vous pouvez le voir dans l'image, l'étiquette, la JComboBox et la JButton sont sur la même ligne!
Au lieu de cela, je les veux "empilées" comme décrit ci-dessus:
JLabel
JComboBox
JButton
J'ai essayé d'utiliser le setLocation(int x, int y) méthode, mais ils montrent toujours dans la même position.
Merci beaucoup!
OriginalL'auteur NoobNe0 | 2014-03-19
Vous devez vous connecter pour publier un commentaire.
utilisation
frame.setLayout(null);
cela vous permettra de placer l'Étiquette, Bouton, etc où vous le souhaitezoui vous n'avez pas de dire tous les objets sur votre panneau où aller utiliser .setBounds(yPosition,xPosition,Hieght,Largeur)
oups c'est fait .setBounds(yPosition,xPosition,largeur,hauteur), par exemple lbl.setBounds(10,10,300,10);
OriginalL'auteur Nerakai
Vous devez utiliser l'un de Java standard de Mise en page (GridLayout, LinearLayout, BoxLayout)
Je recommande d'utiliser une grille de mise en page avec 1 colonne et 3 lignes
comme ci-dessous
OriginalL'auteur Ahmed Salem
Elle est due à la Mise en page qui est utilisé pour aligner les enfants. Par défaut, son FlowLayout qui dispose de tous les composants enfants dans un flux à partir de la gauche vers la droite et, par conséquent, d'obtenir l'affichage ci-dessus.
Vous pouvez utiliser est un GridLayout avec 3 lignes et 1 colonne.
GridLayout
Tous Les Modèles
Certainement il est. Et ceux qui sont à la disposition des gestionnaires qui agissent comme un conteneur dans lequel tous les composants de résidence. Ainsi, vous aurez à choisir un récipient approprié pour répondre à votre besoin. Ce n'est pas que difficile. Essayez-les et vous serez heureux de voir le résultat final, et beaucoup plus de choses que vous pouvez faire à l'aide de LayoutManagers. 🙂
OriginalL'auteur Atul O Holic
Étude des tutoriels sur l'utilisation de gestionnaires de disposition, c'est là que vous trouverez la solution. Ils sont assez dures.
OriginalL'auteur Taerus
Si j'ai bien compris votre question, le code suivant ce que vous essayez de le faire sans être trop compliqué:
La
setLocation
méthode est souvent trop compliqué, sauf si vous avez très spécifiques (artistique?) objectifs pour la mise en page. Pour résoudre ce problème, une solution plus simple est d'utiliser unBoxLayout
et spécifier que vous voulez que les choses ajoutée dans la direction y (verticalement vers le bas.) Notez que vous devez spécifier les dimensions de laJComboBox
(et de certains autres éléments graphiques que vous pouvez ajouter plus tard) pour éviter un géant menu déroulant. cf. un autre stackoverflow post, JComboBox largeurOriginalL'auteur bballdave025